我正在尝试使用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_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(更新版本)和更新选项应该是可行的。