看起来这应该是一个简单的任务,在Preferences菜单中为不同的JRE提供选项,并且能够为每个项目设置不同的编译器和构建路径.但是,它似乎根本行不通.
例如,我将JAVA_HOME设置为Java 1.6的jre.我仍然不清楚Eclipse如何使用它,但它似乎是默认的,并没有采取项目覆盖.我还安装了Java 1.5,并在Java-> Installed JREs部分的eclipse中为此添加了一个JRE.
在我的项目中,我将编译器合规性级别设置为1.5.在项目的构建路径中,我添加了Java 1.5 JRE的系统库.但是,我正在为实现PreparedStatement的类获取编译错误,因为它没有实现仅存在于Java 1.6 PreparedStatement中的抽象方法.具体来说,方法
setAsciiStream(int, InputStream, long) and
setAsciiStream(int, InputStream)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我们针对最初为其编写的Java 1.4编译它时,它起作用了.我们为Java 1.4添加了JRE并在项目中引用了该系统库,并将项目的编译器级别设置为1.4,并且它工作正常.但是,当我做同样的更改以试图指向Java 1.5时,它反而使用1.6.
有什么想法吗?
我正在尝试构建一个简单的程序,演示如何在switch语句中使用String类,但我收到编译错误,因为此功能需要Java SE 7(我的计算机中已经安装了).
第5行的错误消息:无法打开String类型的值.只允许使用可转换的int值或enum consants
Eclipse是否指向JRE7?=是.Environnement变量指向JDK7 = YES.
java -version = OK(见下图).

我甚至试图用控制台提示符编译代码.看错误:

import javax.swing.JOptionPane;
public class SwitchDemo {
public static void main(String[] args) {
String name = "georges";
switch (name.toLowerCase()) {
case "Jhon":
JOptionPane.showMessageDialog(null, "Good morning, Jhon!");
break;
case "georges":
JOptionPane.showMessageDialog(null, "How's it going, georges?");
break;
case "sergei":
JOptionPane.showMessageDialog(null, "sergei, my old sergei!");
break;
case "Steph":
JOptionPane.showMessageDialog(null, "Afternoon lennert, how's the Steph?");
break;
default:
JOptionPane.showMessageDialog(null, "Pleased to meet you, xxxxxx.");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
