如何修复Java中的Java .lang.UnsupportedClassVersionError ?
UnsupportedClassVersionError 是 LinkageError 的子类,由Java虚拟机 (JVM) 抛出。读取类文件时,不支持主次版本号时,抛出此错误,尤其是在链接阶段,抛出此错误
![](https://mangodoc.oss-cn-beijing.aliyuncs.com/geek8geeks/How_to_Fix_java.lang.UnsupportedClassVersionError_in_Java?_0.jpg)
UnsupportedClassVersionError 的示例快照
抛出错误的情况:
当我们尝试使用较高版本的Java编译程序并使用较低版本的 JVM 执行它时,会抛出此错误。但相反的情况并非如此。
因此,重要的是要注意Java版本
获取已安装的Java版本:
Java –version(在命令提示符(windows)中,我们可以给出)
![](https://mangodoc.oss-cn-beijing.aliyuncs.com/geek8geeks/How_to_Fix_java.lang.UnsupportedClassVersionError_in_Java?_2.jpg)
检查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”
![](https://mangodoc.oss-cn-beijing.aliyuncs.com/geek8geeks/How_to_Fix_java.lang.UnsupportedClassVersionError_in_Java?_4.jpg)
使用Java Build Path->Installed JRE 选择 JRE
Java编译器级别选择:
![](https://mangodoc.oss-cn-beijing.aliyuncs.com/geek8geeks/How_to_Fix_java.lang.UnsupportedClassVersionError_in_Java?_5.jpg)
Java编译器选择
马文
我们可以在Maven中构建和打包文件时控制Java的版本。使用Java 7 或更早版本时,我们为编译器插件设置源和目标。
让我们使用编译器插件属性设置源和目标:
– 在Java 9 中添加的发布选项
结论 :
通过命令行方式或IDE方式或Maven方式设置环境变化,我们可以克服“unsupportedclassversion”。