如何修复java.lang.unsupportedclassversionerror:不支持的主要版本次要版本

kwvwclae  于 2021-06-29  发布在  Java
关注(0)|答案(19)|浏览(510)

我正在尝试使用notepad作为我的综合工具编辑、运行、编译等。
我已经安装了jre,并且已经将path变量设置到 .../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,并将path变量设置为jdk而不是jre吗?
这两者有什么区别 PATH jre或jdk中的变量?

ndasle7k

ndasle7k16#

您正在尝试使用不支持编译代码的版本的java版本运行程序。所以基本上你必须用一个更高的版本编译你的代码,并试图用一个更低的版本运行它。
当你得到

Unsupported major.minor version 51.0

版本51.0对应于J2SE7,您很可能已经用Java7编译了代码,并尝试使用较低版本运行它。检查什么 java -version 显示。它应该是Java7版本。如果没有,请在路径/java\u home中进行适当的更改。或者,您可以使用尝试运行代码的相同版本进行编译。如果配置混乱,你可以给出绝对路径 /home/user/jdk1.7.0_11/bin/javac 以及 /home/user/jdk1.7.0_11/bin/java .

bpsygsoo

bpsygsoo17#

别担心,我已经解决了。
它实际上很简单—您需要用相同的版本安装两个jre/jdk。
jre 6->jdk 6
jre 7->jdk 7
等等。

ipakzgxi

ipakzgxi18#

此错误意味着您正试图加载一个java“类”文件,该文件是用比您安装的版本更新的java编译的。
例如,你的 .class 文件可能是为jdk7编译的,您正在尝试用jdk6运行它。
所以解决方法是:
升级java运行时或
如果有源代码,请使用本地java编译器(如果有)重新编译该类。
javac文件名.java
对于开发人员来说,如果另一个开发人员签入.class文件,并且他们拥有比您更新的java版本,则可能会发生这种情况!

70gysomp

70gysomp19#

我在使用ant脚本构建应用程序时也遇到了同样的问题。
我使用eclipse进行应用程序开发,并在项目的build属性中更改了编译器版本。但那对我不起作用。然后我发现我可以在ant脚本中提供编译器版本。
我在编译java文件的部分修改了ant脚本。

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

这对我解决了不受支持的主要和次要问题起了作用。

相关问题