【发布时间】:2021-01-12 11:07:00
【问题描述】:
我使用 Springboot 创建了一个 Web 应用程序,现在我要将其 dockerize 并将其上传到 docker hub。所以我的Dockerfile 是,
FROM openjdk:8
EXPOSE 8080
ADD target/spring-boot-web-0.0.1-SNAPSHOT.jar spring-boot-web-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","spring-boot-web-0.0.1-SNAPSHOT.jar"]
在我的目标中创建 .jar 后,我正在使用以下命令构建 docker 映像,
docker build -t kubernatesimage
它成功构建了 docker 镜像,当我运行 docker images 时,我可以看到创建的镜像。但在将其上传到 docker hub 之前,我需要运行并检查以便执行,
docker run -it -p 4000:80 kubernatesimage
这会返回以下异常,
线程“main”中的异常 java.lang.UnsupportedClassVersionError: guru/springframework/SpringBootWebApplication 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别类文件版本高达 52.0
根据@Nithin 在this StackOverflow 问题中的回答,我发现这是由于版本不匹配和 java 版本代码造成的,
49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
但是,我仍然不知道我需要执行什么来解决问题。我在 Dockerfile 中提到了 openjdk:8,然后我运行 java -version 来获取本地 JDK 版本并返回
java version "1.8.0_271"
那么我需要在本地机器上更改 java 版本还是更改我的Dockerfile?
【问题讨论】:
-
您必须使用您的 docker 使用的版本重新编译代码,或者您必须更新运行时环境的 java 版本。哪个,是你的决定。
-
@Stultuske 你好,我如何检查我的 docker 使用的 java 版本是否有任何命令?
-
都在错误信息中:这个版本的 Java Runtime 只能识别最高 52.0 的类文件版本
-
在本地和docker尝试相同的版本,希望能解决
-
@HasanuzzamanRana 所以我需要删除当前的 docker 镜像并重建它
标签: java spring-boot docker java-8