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

spring boot、docker和EC2中的Java版本

韶镜
2023-03-14
  • Spring启动版本-2.1.13。BUILD-SNAPSHOT
  • Java编译器版本-Jdk11
  • AWS EC2Java版本-jdk7

我开始从事一个微服务项目。因此,我的服务的docker映像是在Jdk11中编译的。当我尝试下载并运行容器时,它不会运行。现在在检查日志后,我看到了-java。lang.UnsupportedClassVersionError我正在使用maven构建。我应该在pom中更改java版本吗。xml?我无法在ec2中更新java版本。请告诉我如何解决这次碰撞并继续。我有很多服务,我正试图把它全部放在EC2中。

Docker文件:更新到Java11

FROM openjdk:11.0-jdk-slim
VOLUME /tmp
COPY snapAppKey.jks snapAppKey.jks
COPY /target/SnapAppConfigServer-0.0.1-SNAPSHOT.jar ConfigServer.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","ConfigServer.jar"]

代码EC2

   Exception in thread "main" java.lang.UnsupportedClassVersionError: com/snapapp/config/api/SnapAppConfigServerApplication 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:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)

共有1个答案

穆承运
2023-03-14

将现有代码从JDK11迁移到JDK8将比上述简单操作更费劲。

将Docker文件中的openjdk:8-jdk-alpine更改为openjdk:11

 类似资料:
  • 我使用下面的dockerfile生成一个图像调用userservice 然后我使用以下命令运行容器 所以我去检查编译的字节码版本,确实是52,我不知道为什么这个错误还是报告

  • 我目前有一个带有docker容器的EC2,但有人告诉我,简单地运行它是不够好的,EC2容器服务可以提供更多的功能,包括自动重启docker和保持日志记录。 我试图按照文档设置EC2容器服务,但我发现命名约定相当混乱。 通过将aws ecr get-login命令从控制台粘贴到终端窗口中,检索docker登录命令,您可以使用该命令对docker客户端进行身份验证。 这个“控制台”和“终端”指的是什么

  • 这里有几种方法可以在 AWS EC2 上安装 Docker。你可以使用 Amazon Linux , 它的软件源中已经包含了 Docker 包,或者你也可以选择其它支持 Docker 的 Linux 镜像 ,例如:标准的 Ubuntu 安装。 当然,首先你要创建一个AWS帐号。 Amazon QuickStart with Amazon Linux AMI 2014.09.1 选择一个镜像: 在你

  • SpringBoot项目中parent中没有默认版本的依赖如何选择版本?类如mybatis-spring-boot-starter依赖,parent中是没有默认配置的。我想请问类似这种情况如何选择合适的依赖版本呢?我在mybatis官网也没有找到相关资料,依赖的jar包中也没有,我不喜欢看网友给的资料,我还是喜欢看官网的资料,大家都是怎么选择的呢?靠经验?靠百度? 尝试过百度和查看官网,想知道对于

  • 问题内容: Windows Server 2016 似乎内置了 Windows 上的Docker?并支持在Docker容器中运行Windows并将Windows用作Docker容器主机。这是否支持Linux?我不这么认为,我认为它仅支持运行Windows Docker容器。这似乎也由Microsoft维护。 用于Windows的Docker似乎是由Docker团队创建的单独安装,用于将Linux