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


当前回答

由于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发布

其他回答

我遇到的问题是,为了运行单元测试,必须从命令行对项目运行Maven编译;如果我对测试类进行了更改,并让Eclipse自动重新编译它,那么就会出现“不支持的major.minor版本51.0”错误。

我确实安装了JDK6和JDK7,但在pom和Eclipse的项目财产页面中,我的所有JRE设置都指向1.6。再多的Maven Update Project和/或刷新也解决不了这个问题。

最后,我尝试关闭项目并重新打开它,这似乎解决了问题!高温

我也遇到过同样的情况,但以上任何提示都无济于事:)在我们的环境中,tomcat作为Windows上的服务运行。我们安装了Java 1.7并在此版本上设置了Java_HOME。当然,源代码是基于Java1.7构建的。尽管如此,tomcat表示它使用了以前版本的JVM。经过深入分析后,Windows上安装的Tomcat服务仍然保持JAVA_HOME的旧值指向JAVA 1.6。安装新的Tomcat服务后,所有问题都得到了解决。因此,结论是:当您更改java版本并将tomcat作为服务运行时,必须重新安装tomcat服务。

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

检查JRE是否为所需版本:

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

我在Grails项目的SpringSourceTool(STS)IDE中也遇到了同样的问题。我检查了已安装的Java版本和项目Java版本为1.7。*。后来我发现在GGTS.ini文件中,Java版本设置为1.6:

解决方案:

-Dosgi.requiredJavaVersion=1.6更改为-Dosgi.requiredJavaVersion=1.7在-vmargs之前添加以下两行-虚拟机jdk1.7.0_21/jre/lib/amd64/server/libjvm.so

问题已解决。编码愉快。

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

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