我正在尝试使用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_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

其他回答

别担心,我解决了。

这实际上很简单——您需要使用相同的版本安装JRE和JDK。

JRE 6->JDK 6

JRE 7->JDK 7

等等

java.lang.UnsupportdClassVersionError发生是因为编译时JDK较高,而运行时JDK较低。

我在1.7中编写的项目中遇到了同样的问题,并尝试在1.6中执行。

我在Eclipse中的解决方案:

右键单击项目财产->Java构建路径->库选择JRE系统库,然后单击右侧的编辑,然后选择目标JRE。现在转到左侧的“Java编译器”,将“编译器”符合性级别更改为目标。

这对我有用。

您可以用Java7编译一些JAR库,而Java运行时只有Java6。这可能发生在一些新的图书馆中。

您已经用JDK7编译了Java类,并且正在尝试在JDK6上运行相同的类。