UnsupportedClassVersionError是一个运行时错误,当Java代码在编译和运行不兼容和不支持的java版本时被抛出。

UnsupportedClassVersionError ClassFormatError ,它是LinkageError 的一个子类。
这是一个由JVM抛出的运行时错误,因为它试图运行一个主要和次要版本都不支持的java类文件。
错误的堆栈跟踪包含了一个消息,如不支持的大、小版本x.x。
x.x是一个数字,对应于你安装的java版本。
简单的解决方法是,首先确保你安装的JDK 和JRE 是同一个版本。
如果你安装了JDK 11 - JRE 11,而不是JRE 8或JRE 9或任何版本。
JDK 9 - JRE 9,不是JRE 10或JRE 9,也不是其他版本
当使用不兼容的编译和运行程序的版本运行java程序时,会出现这个错误。让我们试着理解是什么导致了这个错误。
java文件是用JDK 11编译的,而运行java代码时使用的是JDK 8版本。
请查看下面的表格,了解不同java版本的主、次版本。
| JDK版本 | 主版本号 |
|---|---|
| 1.1 | 45 |
| 1.2 | 46 |
| 1.3 | 46 |
| 1.4 | 47 |
| 1.5 | 48 |
| 1.6 | 49 |
| 1.7 | 50 |
| 1.8 | 51 |
| 1.9 | 52 |
| 1.10 | 53 |
| 1.11 | 54 |
| 1.12 | 55 |
| 1.13 | 56 |
| 1.14 | 57 |
java.lang.UnsupportedClassVersionError错误的解决方案
首先,用命令行检查java和javac的版本。
这里有一个编译器版本
C:\myapp>javac -version
javac 1.8.0_102
使用java命令的运行时版本
C:\myapp>java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
两者都有不同的版本。
在运行不同版本的java代码时,会出现这个错误。
首先,将JDK或JRE升级到相同的版本。一旦设置了相同的版本,再次编译并运行代码
在以下情况下会出现这个错误
- 编译的代码运行在不同的较高的java版本上
- 你的代码运行在较低的java版本上
这个错误在eclipse和命令行上都会出现。
修复eclipse中的UnsupportedClassVersionError错误
当你运行java代码时,首先将你的项目设置指向JDK,接下来将java编译器设置为特定的java版本。以下是步骤
- 右击你的
project->Properties->Java Build Path--Libraries - 选择Java库,如下图所示,然后选择编辑并选择目标JRE

接下来设置java编译器的版本和目标水平的版本
请查看下面的截图来进行eclipse配置

通过命令行修复UnsupportedClassVersionError错误
我们也可以使用source 和target 命令行选项来修复这个错误。提供source 和target 选项,并指定你的版本。
javac -source 1.8 -target 1.8 javafile.java
该代码与落后的版本兼容
修复maven项目的UnsupportedClassVersionError错误
修复maven项目中的UnsupportedClassVersionError错误是为maven编译器插件添加源和目标选项。
这样就可以用相同的版本编译和运行你的项目了。
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.10
1.10
总结
这篇文章讲述了UnsupportedClassVersionError的原因以及在eclipse和maven项目中修复编译和运行时版本不匹配的命令行。