簡體   English   中英

用於 Spring 啟動項目的 AWS beanstalk 上的 Java 11

[英]Java 11 on AWS beanstalk for Spring boot project

我是 Spring Boot 的新手,我正在嘗試開發一個應用程序,以便稍后將其部署在 AWS beanstalk 上。 我開始使用 java 11 的項目,但后來我發現 AWS 只支持 java 8。是否可以將 pom.xml 中的 'maven.compiler.target' 設置為 1.8 以使其正常運行? 我是否必須使用 Java 1.8 進行開發和編譯? 我想使用新的 Java 功能和庫。 如果有人有同樣的問題,我想發表一些意見。 謝謝。 光盤

既然您使用的是 Java 11,為什么不利用 Java 和 Elastic Bean Stalks docker 支持並使用 JDK11 創建一個 docker 映像並使用它進行部署?

如果您選擇不走這條路,並且希望針對較低版本的 Java 將彈性 beantalk 與 Java 8 結合使用,則可以嘗試這樣的操作。

<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>

僅設置 target 選項並不能保證您的代碼實際運行在具有指定版本的 JRE 上。 陷阱是意外使用僅存在於后續 JRE 中的 API,這會使您的代碼在運行時失敗並出現鏈接錯誤。 為避免此問題,您可以配置編譯器的引導類路徑以匹配目標 JRE,或者使用 Animal Sniffer Maven 插件來驗證您的代碼沒有使用意外的 API。 同樣,設置 source 選項並不能保證您的代碼實際上在具有指定版本的 JDK 上編譯。 使用特定的 JDK 版本編譯您的代碼,不同於用於啟動的版本

但請記住,如果您在 Java 8 上編譯和運行代碼,則不能使用已添加到 Java 11 中的 Java 標准庫中的類,因為這些類不會出現在 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 鏈接

您可以使用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"

這將刪除默認的Java 8和安裝AWS” 分布的Java 11。

截至 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

當您使用特定的 Java 版本編譯 Java 項目時,您只能使用大於(或等於)用於編譯它的版本來運行它。 不能做相反的事情,至少如果您正在使用更高版本中存在的語言功能,則不能。

例如,您不能使用 Java 11 的功能,但可以在 Java 8 中運行應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM