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


当前回答

我通过检查部署程序集中是否部署了Maven依赖项,为我解决了这个问题。就我而言,他们不是。

添加它解决了问题。

其他回答

此错误表示您正在尝试加载一个Java“类”文件,该文件是用比您安装的Java版本更高的版本编译的。

例如,您的.class文件可能是为JDK7编译的,您正在尝试使用JDK6运行它。

因此,解决方案是:

升级Java运行时或如果有源代码,请使用本地Java编译器(如果有)重新编译类。javac文件名.java

对于开发人员来说,如果另一个开发人员签入了.class文件,并且他们得到了比您更新的java版本,则可能会发生这种情况!

首先,让我们正确掌握一些基本知识。。。

JRE是NetBeans/Eclipse/standalone中的一个组件,它将为您提供库、JVM、Java插件和Java web启动。注意,它不提供编译器或调试器。

JDK是JRE以及编译器和调试器的超集。

因此,当您将默认库作为JRE而不是JDK时,您将很容易导入内容,但它不会编译。

相反,将路径设置为JDK(我使用NetBeans,我使用NetBeans/etc/NetBeans.conf中的NetBeans.coff设置它们并更改路径)。

单击项目中的“财产”。转到Java构建路径。单击“添加库”。单击JRE系统库上的下一步。如果默认情况下未选择,请选择所需的选项。单击“完成”。

你完了!

我解决了。我跑了:

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

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

错误应该是:

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

我使用的是OS X v10.11.5(El Capitan),我尝试设置JAVA_HOME并通过Maven强制“正确”JAVA版本。没什么帮助。

当应用程序仍在运行时,OS X帐户注销时发生了问题。再次登录后,OS X打开了具有灰色历史记录的旧终端会话。我使用相同的终端会话来构建项目,但由于不支持的类版本错误而失败。

清理Maven项目毫无帮助。

为了解决这个问题,我只需关闭自动打开的终端窗口并使用一个新窗口。