如何解决java.lang.UnsupportedClassVersionError:不支持的主要、次要版本

1,573 阅读3分钟

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

UnsupportedClassVersionError ClassFormatError ,它是LinkageError 的一个子类。

这是一个由JVM抛出的运行时错误,因为它试图运行一个主要和次要版本都不支持的java类文件。

错误的堆栈跟踪包含了一个消息,如不支持的大、小版本x.x。

x.x是一个数字,对应于你安装的java版本。

简单的解决方法是,首先确保你安装的JDKJRE 是同一个版本。

如果你安装了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.145
1.246
1.346
1.447
1.548
1.649
1.750
1.851
1.952
1.1053
1.1154
1.1255
1.1356
1.1457

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

Configure JDK in eclipse

接下来设置java编译器的版本和目标水平的版本

请查看下面的截图来进行eclipse配置
Configure Java compiler in eclipse

通过命令行修复UnsupportedClassVersionError错误

我们也可以使用sourcetarget 命令行选项来修复这个错误。提供sourcetarget 选项,并指定你的版本。

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项目中修复编译和运行时版本不匹配的命令行。