有支持 Java 14 的 tomee-maven-plugin 版本吗?

is there a tomee-maven-plugin version that support Java 14?

我正在使用 tomee-maven-plugin 版本 8.0.5(在 mvn 存储库中找到的最新版本)生成我的 JSF 项目的可执行 Jar,

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

我正在使用 Java14 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 <= 8.0.6 仍在使用阴影版本的 asm7,它对较新的 Java 版本(最多 JDK 13)。这也影响了 Tomee 的几个 transiend 依赖项,如 OWB、CXF 等

实际上,有一些与 JDK 16 相关的工作以及一些待处理的公开拉取请求,以便在下一个 TomEE 版本中支持 JDK16:

根据我的经验,TomEE 8.0.6JDK11 上运行良好。所以现在,您应该使用 JDK11 并等待下一个具有相关更改的 TomEE 版本发布。

更新 (15.04.2021)

我目前是 运行 TomEE 8.0.7-SNAPSHOT (Plume),带有 JDK-16(它也适用于 Maven 插件)。

目前,需要进行以下调整:

  1. 您需要通过 <lib>remove:openjpa</lib><lib>remove:xbean-asm8-shaded</lib><libs> 中删除 OpenJPA 3.1.2 及其瞬态 asm8 依赖项并重新添加最新的 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