首页 > 解决方案 > 应用程序已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本最高为 52.0

问题描述

我正在尝试在 AWS 云中运行 docker 映像,因此在本地,使用 jdk-11.0.1 编译应用程序并像这样编写 docker 文件;请注意,我没有在 AWS ec2 实例中安装任何 JDK,因为我已经在最终映像中包含了采用 openjdk/openjdk11:latest 映像。

FROM adoptopenjdk/openjdk11:latest
ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EXPOSE 8080

1)create the docker image
2)pushed the docker image to docker hub
3)when I run the docker container then getting below error.

线程“main”中的异常 java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication 已由 Java 运行时的更新版本(类文件版本 55.0)编译,此版本的 Java 运行时仅识别类文件版本至 52.0

标签: spring-bootdocker

解决方案


很可能 java 已在本地更新,因此您正在使用与您想象的不同的版本进行编译。或者本地版本不同于“adoptopenjdk/openjdk11:latest”。

我建议您使用多阶段构建,以便您的类始终针对相同的 java 版本进行编译。

您如何编写构建阶段取决于您的环境,因此我没有足够的信息来发布示例。但基本上你需要在构建阶段复制你在本地所做的一切。然后你只需将 jar 复制到最后一个阶段。这将永远有效。


推荐阅读