Я использую 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 для использования Есть ли у кого-нибудь больше информации об этом? Спасибо
@khmarbaise да, я попытался собрать его с помощью JDK8, и это сработало отлично, спасибо за эту информацию, я не знал, что Tomee несовместим с JDK14. А как насчет Tomcat 9? Есть ли плагин для создания исполняемого JAR-файла с Embedded Tomcat?
Java 14 устарела. Используйте Java 15 или Java 11.
Я сомневаюсь, что Tomee работает с JDK 15, потому что он даже не работает с JDK 14..... судя по задокументированным вещам, похоже, что поддерживается только JDK 11, где я не уверен на 100% (я не смог найти действительно хорошие примечания к выпуску, информация о том, где что-то было исправлено.Кроме того, JEE 9 не закончена очень долго?Ноябрь?
Более старые 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).
На данный момент необходимы следующие корректировки:
Вам нужно удалить 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>
На данный момент требуется указать <args>--illegal-access=permit</args>
в конфигурации плагина, чтобы разрешить некоторое отражение и другие вещи. Java 16 изменил значение по умолчанию.
Обновление (10.10.2022)
TomEE 8.0.9 изначально поддерживает JDK17.
У меня есть сомнения, что вы получите tomee для JDK 12+ на основе этого tomee.apache.org/tomee-9.0/docs/java-compatibility.html Я бы сказал, макс. JDK11, если он действительно работает...