适用于Spring启动项目的AWS beanstalk上的Java 11

Dav*_*e C 9 java spring amazon-web-services maven java-11

我是Spring Boot的新手,我正在尝试开发一个应用程序,以便以后在AWS beanstalk上部署它.我使用java 11启动了项目,但后来我发现AWS只支持java 8.是否可以将pom.xml中的"maven.compiler.target"设置为1.8以使其正常运行?我是否必须使用Java 1.8进行开发和编译?我想使用新的Java功能和库.如果有人有同样的问题,我想有一些意见.谢谢.光盘

igo*_*gor 10

您可以使用ebextensions在您的实例上安装 java 11 。只需在源包中创建一个文件夹.ebextensions并在其中添加一个具有以下名称10_java.config和内容的文件:

[更新:修复了 yaml 文件的格式]

container_commands:
    100-remove-old-java:
        command: "sudo yum remove -y java-1.8.0-openjdk-headless"
    200-download-rpm-package:
        command: "wget https://d3pxv6yz143wms.cloudfront.net/11.0.4.11.1/java-11-amazon-corretto-devel-11.0.4.11-1.x86_64.rpm "
    300-install-java:
        command: "sudo yum localinstall -y java-11-amazon-corretto-devel-11.0.4.11-1.x86_64.rpm"
Run Code Online (Sandbox Code Playgroud)

这将删除默认的Java 8和安装AWS”分布的Java 11。


Lac*_*say 9

既然您正在使用Java 11,为什么不利用Java和Elastic Bean Stalks docker支持并使用JDK11创建docker镜像并使用它来部署?

如果您选择不沿着这条路走下去,并且您希望将较低版本的Java定位为使用Java 8的弹性beanstalk,您可以尝试这样的方法.

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>11</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)

仅设置目标选项并不能保证您的代码实际上在具有指定版本的JRE上运行.这种陷阱是无意中使用的API,它只存在于以后的JRE中,这会使您的代码在运行时因链接错误而失败.要避免此问题,您可以配置编译器的引导类路径以匹配目标JRE,也可以使用Animal Sniffer Maven插件验证代码是否使用非预期的API.同样,设置source选项并不能保证您的代码实际上在具有指定版本的JDK上编译.使用特定JDK版本编译代码,不同于用于启动的版本

但请记住,如果你编译和Java的运行8代码,您不能使用已添加到Java的标准库中的Java 11班,因为这些将不存在于Java 8 链接

在搜索时,我发现可能会支持OpenJDK11.we re-affirm that the OpenJDK 8 and OpenJDK 11 Java runtimes in Amazon Linux 2 will continue to receive free long-term support from Amazon until at least June 30, 2023 链接


小智 5

截至 2020 年 5 月,在 64 位 Amazon Linux 2 上运行的 Corretto 11 现在是 Elastic Beanstalk 中的托管平台。以下是对可用 Java SE 平台的参考:

https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase