我正在尝试使用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文件是用与您试图运行它的版本(较低运行时版本)不同的版本(较高的编译器版本)编译的。

基本的理解是,用较低版本编译的类预计将在以后的较高版本中运行。但相反的情况(用更高的编译器版本编译并尝试用更低的运行时版本运行)有时是不可能的。

因此,在尝试执行程序时,会显示此错误。不支持的major.minor版本x.x

Q: 我用Java7创建了一个应用程序,但当我的用户尝试运行它时,会出现不支持的major.minor版本51.0错误。什么这意味着什么?我该怎么办?A: 如果在Java7中使用javac编译应用程序,则生成的类文件将具有51.0版本号。的版本7之前的Java无法识别此数字,因此您的用户将在运行应用程序之前升级到Java 7。如果你不是使用任何Java 7 API,您都可以尝试使用javac-target1.6创建一个1.6兼容的类文件。如果您的应用程序是使用webstart部署的,您可以指定最小值需要版本。有关更多信息,请参阅Java Web Start上的文档这里是JNLP。一旦我们触发自动更新到适用于当前桌面上使用Java 6的最终用户的Java 7。这个这个时间表还没有确定,我们想给开发人员是时候先解决他们的代码和JDK7之间的任何问题了。

(来源:oracle.com)

其他回答

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

确保检查java的环境变量版本,可能只是java_HOME(JDK路径)和JRE_HOME(JRE路径)版本之间的差异导致了问题

最常见的问题是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(更新版本)和更新选项应该是可行的。

我解决了。我跑了:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

该错误具有误导性,不支持major.minor版本51.0。这给人一种不支持版本51(Java 7)的印象。我们应该使用Java 6。

错误应该是:

不支持当前的Java版本50。改用Java版本7(51:0及更高版本)`

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

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