我正在尝试使用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变量有什么区别?


当前回答

您试图使用不支持编译代码的Java版本运行程序。所以基本上,您必须使用更高版本编译代码,并尝试使用更低版本运行代码。

正如你所得到的

Unsupported major.minor version 51.0

版本51.0对应于J2SE 7,您很可能用Java 7编译了代码,并尝试使用较低版本运行它。检查java版本显示的内容。它应该是Java 7版本。如果没有,请在PATH/JAVA_HOME中进行适当的更改。或者您可以使用试图运行代码的相同版本进行编译。如果配置令人困惑,您可以始终给出绝对路径/home/user/jdk1.7.0_11/bin/javac和/home/user/jdk1.70_11/bin/java。

其他回答

当我安装JDK1.7时,问题得到了解决。

在安装了Homebrew的Mac OS X上修复此问题的另一种方法是:

brew install Caskroom/cask/java

在我的案例中,问题出现在服务器运行时配置中:

检查JRE是否为所需版本:

该项目的版本为1.7,服务器JRE设置为1.6,在更改为正确的java版本后,它很好地启动了。

在我的案例中,出现问题是因为$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时,错误消失了。