我正在尝试在AWS云中运行docker镜像,所以在本地,使用jdk-11.0.1编译应用程序,并像这样编写docker文件;请注意,我还没有在adoptopenjdk实例中安装任何JDK,因为我已经在最终镜像中包含了adoptopenjdk/ ec2 11:最新镜像。
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之前的类文件版本
发布于 2020-09-21 17:14:11
很可能java是在本地更新的,所以你编译的版本和你想的不一样。或者本地版本不同于adoptopenjdk/openjdk11:latest。
我建议您使用多阶段构建,以便始终使用相同的java版本编译您的类。
如何编写构建阶段取决于您的环境,因此我没有足够的信息来发布示例。但基本上,您需要在构建阶段复制您在本地执行的所有操作。然后,您只需将jar复制到最后一个阶段。这将永远起作用。
发布于 2021-08-28 19:04:32
尝试将您的openjdk版本更改为最新版本,即从: openjdk :12为我工作,因为我正在使用最新的java版本,使用各自的openjdk版本在运行时匹配。
发布于 2021-12-01 07:49:24
为了避免这种问题,建议对图像进行非常具体的说明。
即FROM adoptopenjdk/openjdk11:jre-11.0.9.1_1-alpine
对于这种最佳实践,我建议阅读我在寻找解决方案时找到的this文章。
https://stackoverflow.com/questions/63989201
复制相似问题