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

Docker启动springboot项目并报告java版本错误

穆洋
2023-03-14

我使用下面的dockerfile生成一个图像调用userservice

FROM java:8-alpine
COPY ./userservice.jar /tmp/userservice.jar
ENTRYPOINT java -jar /tmp/userservice.jar

然后我使用以下命令运行容器

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/imortal/UserApplication 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
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)

所以我去检查编译的字节码版本,确实是52,我不知道为什么这个错误还是报告

javap -verbose .\UserApplication.class
public class com.imortal.UserApplication
minor version: 0
major version: 52
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2                          // 
com/imortal/UserApplication
super_class: #4                         // java/lang/Object
interfaces: 0, fields: 0, methods: 2, attributes: 2

共有1个答案

曹均
2023-03-14

使用具有兼容jdk版本的docker映像,这样它就不会与您所拥有的所有微服务产生任何冲突。出现此问题可能是因为您的一个微服务构建在其他jdk版本上。

 类似资料:
  • 项目使用 nuxt2 写的, 现在进行了 npm run build 打包, 想在生产环境中使用docker部署,部署方式如下 上传项目 将打包后的 .nuxt, static, nuxt.config.js, package.json, node_modules上传至服务器 /home/wwwroot/default 下 (nginx等的配置略) 在项目目录创建启动文件 ecosystem.co

  • 后台管理系统启动正常,在登录页面点登录就报错(本人是熟悉vue,他这请求库不是axios也不是fetch): 接口单独拿工具(postman或apifox等)测是正常的,也就是后端无问题也不是跨域问题。 初步判断是这个项目包版本的问题。我也不能大改不敢升级最新版,太多包是8年前的了。只能小改,如何改

  • 搜索了一些类似案例未解决,问题出在哪里? 1.> 错误提示: Failed to bind properties under 'mapper' to tk.mybatis.mapper.entity.Config: Action: Update your application's configuration pom.xml ,重点关注 “tk.mybatis” application.prope

  • 我怎样才能解决那个错误呢?

  • 在一个配置了多个应用项目和多个 Library 项目的多项目里,当同时运行所有测试的时候,测试结果整合到一份测试报告中可能是非常有用的。 为了实现这个目的,需要在同一个配置中添加另一个插件。可以通过以下方式添加: buildscript { repositories { jcenter() } dependencies { classpath