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


当前回答

基于此。。。

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

在Eclipse中,右键单击包资源管理器中的项目:

生成路径->配置生成路径

低于:

Java构建路径->库->添加库->JRE系统库->安装的JRE->搜索。

搜索完成后,通过在可用列表中选择库来添加所需的JRE。

其他回答

今天,这个错误消息出现在Ubuntu 12.04.2 LTS(Precise Pangolin)上的Tomcat 7中:

/var/log/tomcat7/localhost.2014-04-08.日志:2014年4月8日上午9:00:55 org.apache.catalina.core.StandardContext过滤器开始严重:启动筛选器支柱2时出现异常java.lang.UnsupportdClassVersionError:controller/ReqAccept:不支持的major.minor版本51.0(无法加载类控制器.ReqAccept)

Struts应用程序是用Java7编译的。

结果是,有人使用“service tomcat[stop/start]”重新启动tomcat 7,

$ps-ef|grep javatomcat7 31783 1 32 20:13?00:00:03/usr/lib/jvm/defaultjava/bin/java。。。$/usr/lib/jvm/defaultjava/bin/java-版本java版本“1.6.0_27”

这会导致“不支持的major.minor版本51.0”错误。

当我们使用“/etc/init.d/tomcat7[stop/start]”重新启动Tomcat 7时,问题得到了解决。

$ps-ef|grep javatomcat7 31886 1 80 20:24?00:00:10/usr/local/java/jdk1.7.0_15/bin/java$/usr/local/java/jdk1.7.0_15/bin/java-版本java版本“1.7.0_15”

对我来说,我在com/sun/javadoc/Doclet类上遇到了这个错误。经过一番挖掘,我发现我无意中将tools.jar从Java8复制到了Java7文件夹中。

找到Java7的tools.jar并将其放回文件夹解决了我的问题。所以有些事情要尝试。

由于java9-target被--release替换。

在java11之前,--release的可用数字是6、7、8、9、10、11。你可以猜到未来的版本将是12、13,等等。

要为较旧的目标jvm进行编译,请使用javac-release7Tmp.java//这将生成.class文件,该文件可以在jvm>=7上运行,

然后,您可以通过以下方式检查目标版本:

javap-v Tmp|grep版本

在输出中,主版本标识目标jvm版本。

55->java 1154->java 1053->java 952->java 851->java 750->java 6

未来版本将删除更多旧版本:

从java 11开始,主要版本<=49(java版本<=5)不受支持。截至java 12和13,主要版本<=50(java版本<=6)不受支持。

您可以通过以下命令找到当前javac支持的目标版本:javac-help|grep发布

我也遇到过同样的问题,我在Linux中解决了这个问题。

检查您的$JAVA_HOME

需要JDK 1.8来编译/构建APK

安装Java JDK 1.8并更改Java_HOME

编辑~/.bashrc并将JDK 1.8路径添加为JAVA_HOME。

导出JAVA_HOME=/usr/lib/jvm/JAVA-8-oracle/jre/

和source~/.bashrc

关闭当前终端窗口/选项卡并运行$JAVA_HOME检查路径。

您的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)