【问题标题】:How to solve java.lang.UnsupportedClassVersionError? [duplicate]如何解决 java.lang.UnsupportedClassVersionError? [复制]
【发布时间】:2021-08-21 15:46:55
【问题描述】:

我能够通过以下 docker 文件将我的项目停靠在 Spring Boot 中:

FROM openjdk:7-jdk-alpine
ARG JAR_FILE=target/edms-influx-device-fixer-1.2.1.jar
COPY ${JAR_FILE} edms-influx-device-fixer-1.2.1.jar
ENTRYPOINT ["java","-jar","edms-influx-device-fixer-1.2.1.jar"]

但是当我尝试使用 docker 命令运行时: docker run -p 8085: 8085 名称项目

接受这个例外:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:808)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:443)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:65)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:349)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:348)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:430)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:323)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我声明我的 JAVA_HOME 环境变量指向 jdk-14.0.2

如果在我的 docker 文件中我使用:openjdk:8-jdk-alpine 我得到这个异常:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/xxxx/xxxx/xxxx/App has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

我该如何解决这个异常?

【问题讨论】:

  • 使用 FROM openjdk:14-jdk-alpine 而不是 FROM openjdk:7-jdk-alpine,因为您在本地使用 java 14。确保环境匹配是第一步

标签: java spring-boot docker


【解决方案1】:

Unsupported major.minor version 52.0 表示您正在使用的代码/库是使用 Java 8 编译的。并且您正尝试在 Java 7 FROM openjdk:7-jdk-alpine 上运行,因此它将无法工作。

解决方案是切换到在 Java 8+ 上运行,例如FROM openjdk:8-jdk-alpine。或者将您的代码/依赖项更改为与 Java 7 兼容。

【讨论】:

  • 如果这对你有用,你能接受这个答案吗?
猜你喜欢
  • 1970-01-01
  • 2013-01-24
  • 2018-12-24
  • 2017-04-03
  • 2020-02-07
  • 2021-12-28
  • 2023-01-07
相关资源
最近更新 更多