由于依赖关系,不支持major.minor 52.0版

时间:2019-05-16 14:32:22

标签: java maven unsupported-class-version

我有一个使用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构建的事实时,如何解决此问题?

2 个答案:

答案 0 :(得分:1)

UnsupportedClassVersionError ...当您具有在更高版本的Java中构建的库并且想要在运行于较低版本的应用程序中使用时,发生次要错误。因此,有两种可能的解决方案。

  • 首先使用所需版本的JDK中的代码更改来构建库
  • 升级您的JDK版本,以便库和您的应用程序都可以使用。

答案 1 :(得分:0)

这实际上取决于库使用Java8 JVM功能的程度。您可以尝试在库中使用诸如Retrolambda之类的Retrorlanslator。 https://github.com/luontola/retrolambda

检查Can Java 8 code be compiled to run on Java 7 JVM?中的讨论

在现有服务器或JVM上进行新服务器升级可以更好地利用您的时间。