首页 > 解决方案 > 由于依赖关系,不支持的 major.minor 版本 52.0

问题描述

我有一个用 Java 7 构建的项目(项目 pom 摘录):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

它依赖于一个用 Java 8 构建的模块(依赖 pom 摘录):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

我已在运行 Java 7 的服务器上部署并运行我的应用程序,但出现此错误:

java.lang.UnsupportedClassVersionError: com/h/i/c/u/e/TradeStatus : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
at java.lang.Class.getDeclaredMethods(Class.java:1808)
at ...

知道我无法更改服务器上的 JRE,并且我无法更改模块是用 Java 8 构建的事实,我该如何解决这个问题?

标签: javamavenunsupported-class-version

解决方案


UnsupportedClassVersionError ... Major Minor 当您有一个内置在较高版本的 java 中的库并且您想在以较低版本运行的应用程序中使用时发生。所以有两种可能的解决方案。

  • 首先在所需版本的 JDK 中使用代码更改构建库
  • 升级您的 JDK 版本,以便库和您的应用程序都能正常工作。

推荐阅读