我正在尝试使用Notepad++作为我的多功能工具编辑、运行、编译等。

我安装了JRE,并将路径变量设置为/bin目录。

当我在Notepad++中运行“Hello world”时,我收到以下消息:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

我认为这里的问题在于版本;Java的某些版本可能是旧的或太新的。

如何修复?我应该安装JDK,并将路径变量设置为JDK而不是JRE吗?JRE或JDK中的PATH变量有什么区别?


当前回答

在Eclipse的菜单窗口->首选项->Java->编译器中,还选中“配置项目特定设置”。

如果您仍然存在相同Java版本的错误:请尝试手动删除项目的构建文件夹。然后重新启动Eclipse。

其他回答

您使用了更高版本的JDK来编译并尝试从更低版本的JDK/JJRE运行。

要检查此项,请参阅版本信息:

javac -version

java -version

它们会有所不同,javac的版本号会更高。

要解决这个问题,请使用JDK版本的java运行,或者如果您有一个新的JRE/JDK也可以运行。

javac将告诉您位置,例如/usr/bin/javac。只需使用/usr/bin/java<program>直接运行。

或者,可以将环境变量设置为永久解决方案。

最常见的问题是JAVA_HOME变量配置错误,如果您安装了多个,该变量应指向正确的JAVA开发工具包库。

要查找SDK Java文件夹的位置,请运行以下命令:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian/Ubuntu

要检查您安装了哪个java(openjdk),请通过以下方式进行检查:

dpkg -l "openjdk*" | grep ^i

or:

update-java-alternatives -l

要更改它,请使用:

update-alternatives --config java

如果需要,请使用sudo作为前缀。

选择另一个java版本。

或检查哪些可供安装:

apt-cache search ^openjdk

如果需要,请使用sudo作为前缀。

然后可以安装,例如:

apt-get install openjdk-7-jre

如果需要,请使用sudo作为前缀。

Fedora、Oracle Linux、Red Hat

通过以下方式安装/升级适当的软件包:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdk包仅包含java Runtime Environment。如果您想开发Java程序,请安装Java-1.7.0-openjdk-devel包。

BSD

FreeBSDPorts集合中有一个名为openjdk7的openjdk7包,可能需要重新配置。

请参阅:OpenJDK wiki页面。

窗户

只需从Oracle站点安装适当的Java SE开发工具包库或安装

詹金斯

如果您遇到Jenkins的问题,请参阅:

JENKINS-30561-无法使用SSH启动代理

然而,选择正确版本的Java(更新版本)和更新选项应该是可行的。

安装JDK 7.0.55并将Java for Eclipse设置为JDK7.0.55。通过在构建路径JDK 7.0.55上配置,使用JDK 7.0.5 5构建项目。通过菜单Windows->Preferences->Java->compiler-choose 1.7在Eclipse for JDK 7.0.55中设置编译器。

在我的案例中,出现问题是因为$Java_HOME和$PATH中的Java版本不同。

echo $JAVA_HOME
/usr/lib/jvm/java-7-openjdk-amd64/jre
echo $PATH
/opt/jdk/jdk1.8.0_151/bin:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:/usr/local/bin:/usr/bin:/bin

一旦我将它们更新为Java的相同版本,问题就消失了。

export JAVA_HOME=/opt/jdk/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH

当从Eclipse运行Ant时,我收到了同样的错误消息,但这里提到的其他解决方案并没有解决我的问题。有趣的是,从Windows命令行运行Ant运行得很好,所以这必须是Eclipse中的配置问题。

事实证明,在Eclipse下,您可以指定Ant应该运行的环境,并将其设置为JRE而不是JDK。

转到:运行->外部工具->外部工具配置。。。为项目选择Ant build.xml(如果有多个项目)激活选项卡“JRE”这里选择了“单独的JRE:jre6”。当我将其从1.6或1.7系列更改为JDK时,错误消失了。