既然您使用的是 Java 11,为什么不利用 Java 和 Elastic Bean Stalks 泊坞窗支持,使用 JDK11 创建一个泊坞窗映像,并用它来部署呢?
如果你选择不走这条路,并且想要以较低版本的Java为目标,将弹性beanstalk与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>
仅设置目标选项并不能保证代码实际运行在具有指定版本的 JRE 上。陷阱是意外使用仅在以后的 JRE 中存在的 API,这会使代码在运行时失败并出现链接错误。若要避免此问题,可以将编译器的引导类路径配置为与目标 JRE 匹配,也可以使用 Animal 嗅探器 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