【问题标题】:is there a tomee-maven-plugin version that support Java 14?是否有支持 Java 14 的 tomee-maven-plugin 版本?
【发布时间】:2020-12-14 14:27:40
【问题描述】:

我正在使用 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>

package 命令运行良好,我得到了 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.apache.org/tomee-9.0/docs/java-compatibility.html 获得 JDK 12+ 的 tomee 我会说最大。 JDK11 如果真的有用的话……
  • @khmarbaise 是的,我尝试使用 JDK8 构建它,效果很好,感谢您提供的信息我不知道 Tomee 与 JDK14 不兼容 Tomcat 9 怎么样?是否有插件可以使用嵌入式 Tomcat 创建可执行 JAR?
  • Java 14 已过时。使用 Java 15 或 Java 11。
  • 我怀疑 Tomee 是否可以在 JDK 15 上工作,因为它甚至不能在 JDK 14 上工作.....根据记录的内容,我不确定 100% 肯定只支持 JDK 11 (我找不到一个非常好的发布说明信息,其中已经修复了一些问题。除此之外,JEE 9 还没有完成很长时间?11 月?

标签: java maven apache-tomee


【解决方案1】:

较旧的 TomEE 仍在使用 asm7 的阴影版本,该版本仅对较新的 Java 版本(最高 JDK 13)提供有限支持。这也会影响 Tomee 的几个瞬态依赖,例如 OWB、CXF 等。

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

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

更新 (15.04.2021)

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

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

  1. 您需要通过&lt;lib&gt;remove:openjpa&lt;/lib&gt;&lt;lib&gt;remove:xbean-asm8-shaded&lt;/lib&gt; 删除&lt;libs&gt; 中的OpenJPA 3.1.2 及其瞬态asm8 依赖,然后通过&lt;lib&gt;org.apache.openjpa:openjpa:3.1.3-SNAPSHOT&lt;/lib&gt; 重新添加最新的3.1.3-SNAPSHOT

  2. 目前,它需要在插件配置中指定&lt;args&gt;--illegal-access=permit&lt;/args&gt; 以允许一些反射和其他东西。 Java 16 切换了默认值。

更新 (10.10.2022)

TomEE 8.0.9 支持 JDK17 开箱即用。

【讨论】: