Java 11 на AWS beanstalk для загрузочного проекта Spring - PullRequest
0 голосов
/ 08 января 2019

Я новичок в Spring Boot и пытаюсь разработать приложение для последующего развертывания его на AWS beanstalk. Я начал проект с использованием Java 11, но позже я обнаружил, что AWS поддерживает только Java 8. Можно ли установить «maven.compiler.target» в pom.xml равным 1,8, чтобы он работал правильно? Должен ли я использовать Java 1.8 для разработки и компиляции? Я хотел бы использовать новые функции Java и библиотеку. Я хотел бы иметь мнение, если у кого-то есть такие же проблемы. Благодарю. * Cd * 1001

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Поскольку вы используете 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 с указанной версией. Подводный камень непреднамеренное использование API, которые существуют только в более поздних JRE, которые сделать ваш код сбой во время выполнения с ошибкой связывания. Чтобы избежать этого проблема, вы можете настроить загрузочный classpath компилятора для соответствия целевой JRE или используйте плагин Animal Sniffer Maven для проверки вашего код не использует непреднамеренные API. Таким же образом, установка источника опция не гарантирует, что ваш код на самом деле компилируется в 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 Ссылка

0 голосов
/ 08 января 2019

Когда вы компилируете проект Java с определенной версией Java, вы можете запустить его только с версией, которая больше (или равна), чем та, которую вы использовали для компиляции. Невозможно сделать обратное, по крайней мере, если вы используете функции языка, присутствующие в более поздних версиях.

например. вы не можете использовать функции из Java 11, но для запуска приложения в Java 8

...