Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Spring boot项目的AWS beanstalk上的Java 11_Java_Spring_Amazon Web Services_Maven_Java 11 - Fatal编程技术网

用于Spring boot项目的AWS beanstalk上的Java 11

用于Spring boot项目的AWS beanstalk上的Java 11,java,spring,amazon-web-services,maven,java-11,Java,Spring,Amazon Web Services,Maven,Java 11,我是Spring Boot的新手,我正在尝试开发一个应用程序,稍后将其部署到AWS beanstalk上。 我使用Java11开始了这个项目,但后来我发现AWS只支持Java8。 是否可以将pom.xml中的“maven.compiler.target”设置为1.8以使其正确运行? 开发和编译都必须使用Java1.8吗? 我想使用新的Java特性和库。 如果有人有同样的问题,我想提出一些意见。 谢谢 Cd当您使用特定的Java版本编译Java项目时,您只能使用大于(或等于)您用来编译它的版本来运

我是Spring Boot的新手,我正在尝试开发一个应用程序,稍后将其部署到AWS beanstalk上。 我使用Java11开始了这个项目,但后来我发现AWS只支持Java8。 是否可以将pom.xml中的“maven.compiler.target”设置为1.8以使其正确运行? 开发和编译都必须使用Java1.8吗? 我想使用新的Java特性和库。 如果有人有同样的问题,我想提出一些意见。 谢谢
Cd

当您使用特定的Java版本编译Java项目时,您只能使用大于(或等于)您用来编译它的版本来运行它。相反的情况是无法做到的,至少如果您使用的是该语言在更高版本中的功能,就不能做到这一点


例如,您不能使用Java 11的功能,但要在Java 8中运行应用程序,既然您使用的是Java 11,为什么不利用Java和Elastic Bean Stalls docker支持,使用JDK11创建docker映像并使用它进行部署

如果您选择不走这条路,并且希望针对较低版本的java使用elastic beanstalk和Java8,您可以尝试类似的方法

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

[...]
[...]
org.apache.maven.plugins


在搜索时,我发现对OpenJDK11的支持可能即将到来
我们再次确认Amazon Linux 2中的OpenJDK 8和OpenJDK 11 Java运行时将继续从Amazon获得免费的长期支持,至少到2023年6月30日为止

您可以使用在实例上安装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并安装java 11的AWS。

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


@igor下面的命令不起作用。我想安装OpenJdk11 OpenJ9 JVM<代码>容器_命令:100删除旧java:command:“sudo yum remove-y java-1.8.0-openjdk-headless”200下载rpm包:命令:“喂,杰伊。除了AWS Corretto之外,我没有对JVM测试这种方法。如果您只需要特定版本的JDK,那么最好创建一个带有错误消息和其他详细信息的单独问题。你可以在这里留下这个问题的链接。我看看能不能帮上忙。@igor我昨天提出了这个问题。这是链接-。我有另一个想法,ssh到服务器上,然后在服务器上安装jdk 11。@jay你能用测试过的脚本吗?当我复制答案中的yaml时,我得到了无效的密钥错误。我还在想我应该用什么。听起来很激动人心,但现在是2020年5月,还是什么都没有。谢谢亚马逊!