Есть ли версия плагина tomee-maven-plugin, поддерживающая Java 14?

Я использую tomee-maven-plugin версии 8.0.5 (последняя найденная в репозитории mvn) для создания исполняемого файла Jar моего проекта JSF,

</plugin>
<plugin>
<groupId>org.apache.tomee.maven</groupId>
<artifactId> </artifactId>
<version>8.0.5</version>
 <executions>
   <execution>
     <id>executable-jar</id>
      <goals>
           <goal>exec</goal>
      </goals>
      <phase>package</phase>
    </execution>
  </executions>
</plugin>

Команда пакета работает нормально, и я получил War и Jar но когда я запускаю сервер

java -jar MyJar.jar 

Я использую Java 14. Развертывание на Tomee отлично работает в Eclipse. , Загрузка приложения вызывает эту ошибку:

        Caused by: org.apache.openejb.OpenEJBException: Unable to create annotation scanner for web module MonProjet-0.0.1-SNAPSHOT: Unable to read class definition for gestion.controller.GuestServiceControler
            at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:886)
            at org.apache.openejb.config.DeploymentLoader.load(DeploymentLoader.java:233)
            at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2361)
            ... 44 more
    Caused by: java.lang.RuntimeException: Unable to read class definition for gestion.controller.GuestServiceControler
            at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1180)
            at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:153)
            at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:166)
            at org.apache.openejb.config.FinderFactory$OpenEJBAnnotationFinder.<init>(FinderFactory.java:546)
            at org.apache.openejb.config.FinderFactory.newFinder(FinderFactory.java:267)
            at org.apache.openejb.config.FinderFactory.create(FinderFactory.java:80)
            at org.apache.openejb.config.FinderFactory.createFinder(FinderFactory.java:69)
            at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:878)
            ... 46 more
    Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 58
            at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:195)
            at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:176)
            at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:162)
            at org.apache.xbean.asm7.ClassReader.<init>(ClassReader.java:283)
            at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1176

Я провел свои исследования по этому поводу, и проблема заключается в зависимости «org.apache.xbean.asm7», я пытался переопределить эту зависимость, заставив плагин использовать «org.apache.xbean.asm8», но это не так. работа и нет других версий плагина Maven для использования Есть ли у кого-нибудь больше информации об этом? Спасибо

У меня есть сомнения, что вы получите tomee для JDK 12+ на основе этого tomee.apache.org/tomee-9.0/docs/java-compatibility.html Я бы сказал, макс. JDK11, если он действительно работает...

khmarbaise 14.12.2020 15:43

@khmarbaise да, я попытался собрать его с помощью JDK8, и это сработало отлично, спасибо за эту информацию, я не знал, что Tomee несовместим с JDK14. А как насчет Tomcat 9? Есть ли плагин для создания исполняемого JAR-файла с Embedded Tomcat?

DJAMEL DAHMANE 14.12.2020 15:46

Java 14 устарела. Используйте Java 15 или Java 11.

J Fabian Meier 14.12.2020 16:04

Я сомневаюсь, что Tomee работает с JDK 15, потому что он даже не работает с JDK 14..... судя по задокументированным вещам, похоже, что поддерживается только JDK 11, где я не уверен на 100% (я не смог найти действительно хорошие примечания к выпуску, информация о том, где что-то было исправлено.Кроме того, JEE 9 не закончена очень долго?Ноябрь?

khmarbaise 14.12.2020 16:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
450
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Более старые TomEE <= 8.0.6 все еще используют затененную версию asm7, которая имеет лишь ограниченную поддержку новых версий Java (макс. JDK 13). Это также влияет на несколько временных зависимостей Tomee, таких как OWB, CXF и т. д.

На самом деле, была проведена некоторая работа, связанная с JDK 16, а также несколько ожидающих открытых запросов на вытягивание для поддержки JDK16 в следующем выпуске TomEE:

По моему опыту, TomEE 8.0.6 отлично работает с JDK11. Так что на данный момент вам следует использовать JDK11 и ждать, пока не выйдет следующий выпуск TomEE с соответствующими изменениями.

Обновление (15.04.2021)

В настоящее время я использую TomEE 8.0.7-SNAPSHOT (Plume) с JDK-16 (он также работает с плагином Maven).

На данный момент необходимы следующие корректировки:

  1. Вам нужно удалить OpenJPA 3.1.2 и его временную зависимость asm8 в <libs> через <lib>remove:openjpa</lib> и <lib>remove:xbean-asm8-shaded</lib> и повторно добавить последнюю 3.1.3-SNAPSHOT через <lib>org.apache.openjpa:openjpa:3.1.3-SNAPSHOT</lib>

  2. На данный момент требуется указать <args>--illegal-access=permit</args> в конфигурации плагина, чтобы разрешить некоторое отражение и другие вещи. Java 16 изменил значение по умолчанию.

Обновление (10.10.2022)

TomEE 8.0.9 изначально поддерживает JDK17.

Другие вопросы по теме