当前位置: 首页 > 知识库问答 >
问题:

应用程序由最新版本的Java Runtime(类文件版本55.0)编译,该版本高达52.0

钱雅逸
2023-03-14

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

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 Runtime(类文件版本55.0)编译,此版本的Java Runtime仅识别高达52.0的类文件版本

共有3个答案

邵兴庆
2023-03-14

为了避免这种问题,建议对图像非常具体。

11.0.9.1_1高山

对于这种最佳实践,我建议阅读我在寻找解决方案时发现的这篇文章。

时同
2023-03-14

尝试将您的openjdk版本更改为最新版本,即从:openjdk:12开始。由于我使用的是最新的java版本,请在运行时使用相应的openjdk版本进行匹配

林君博
2023-03-14

很可能java是在本地更新的,所以您使用的是与您想象的不同的版本。或者本地版本不同于“采用OpenJDK/openjdk11:latest”。

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

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

 类似资料: