📌  相关文章
📜  如何修复Java中的Java .lang.UnsupportedClassVersionError ?

📅  最后修改于: 2022-05-13 01:55:03.585000             🧑  作者: Mango

如何修复Java中的Java .lang.UnsupportedClassVersionError ?

UnsupportedClassVersionError 是 LinkageError 的子类,由Java虚拟机 (JVM) 抛出。读取类文件时,不支持主次版本号时,抛出此错误,尤其是在链接阶段,抛出此错误

UnsupportedClassVersionError 的示例快照

抛出错误的情况:

当我们尝试使用较高版本的Java编译程序并使用较低版本的 JVM 执行它时,会抛出此错误。但相反的情况并非如此。

因此,重要的是要注意Java版本

获取已安装的Java版本:

Java –version(在命令提示符(windows)中,我们可以给出)

检查Java版本

通过命令行修复程序:

为了克服 UnsupportedClassVersionError,我们可以为较早版本的Java编译我们的代码,或者在较新的Java版本上运行我们的代码。这只是关于我们选择的决定。如果使用第三方库,最好在较新的Java版本上运行,如果是用于分发,最好编译到较旧的版本。

使用 JAVA_HOME 环境变量:

在执行Java程序时,设置 JAVA_HOME 并在路径中设置该值总是好的

我们也可以通过以下方式在命令提示符中检查

C:\Windows\system32>echo %JAVA_HOME%
C:\Program Files\Java\jdk-9.0.4

在新的 JRE 上运行Java程序的要求:

移动到目录并找到 bin 目录。例如,如果 JRE 位于如下位置

C:\Program Files\Java\jdk-11.0.2, then navigate till C:\Program Files\Java\jdk-11.0.2\bin

执行程序为

java    // Even we can give filename with full package

在较旧的 JRE 上运行Java程序的要求:

例子 :

C:\Program Files\Java\jdk1.8.0_31\bin\javac 

为了保证兼容性,我们可以将“-bootclasspath”指向目标JRE的rt.jar:

javac -bootclasspath "C:\Program Files\Java\jdk1.8.0_31\jre\lib\rt.jar" 
\ -source 1.8 -target 1.8 

【主要适用于JDK 8及更低版本】

但是在 JDK 9 中,添加了“-release”参数来替换“-source”和“-target”。

“-release”选项支持目标 6、7、8、9、10 和 11。例如,让我们使用“-release”来定位Java 8:

javac --release 8 

有许多 IDE 可用于Java开发

让我们看看如何克服 Eclipse 中的“UnsupportedClassVersionError”

使用Java Build Path->Installed JRE 选择 JRE

Java编译器级别选择:

Java编译器选择

马文

我们可以在Maven中构建和打包文件时控制Java的版本。使用Java 7 或更早版本时,我们为编译器插件设置源和目标。

让我们使用编译器插件属性设置源和目标:

– 在Java 9 中添加的发布选项

结论 :

通过命令行方式或IDE方式或Maven方式设置环境变化,我们可以克服“unsupportedclassversion”。