You need to enable JavaScript to run this app. tomee-maven-plugin是否有支持Java 14的可用版本?
优惠活动
大模型
产品
解决方案
定价
更多

tomee-maven-plugin是否有支持Java 14的可用版本?

Java 14环境下tomee-maven-plugin 8.0.5启动报类版本不兼容的解决方法

根因说明

  • 报错栈中的org.apache.xbean.asm7是Tomee 8.0.5运行时内置的字节码扫描依赖,并非Maven插件层面的可传递依赖。ASM7版本最高支持解析Java 13生成的class文件(对应major version 57),无法识别Java 14编译生成的class文件(对应major version 58),是触发类扫描失败的直接原因。
  • 此前手动替换ASM8版本操作不生效的核心逻辑:仅修改Maven插件自身的依赖配置,不会变更最终打包进可执行Jar的Tomee核心运行时组件,实际启动时类路径加载的仍然是旧版ASM7。
  • 经Maven仓库检索,8.0.5确为tomee-maven-plugin 8.x系列的最新稳定版本,不存在原生适配Java 14的同版本更新包。

可落地解决方案

  • 方案1:调整项目编译版本适配现有运行时能力
    修改项目pom.xml中maven-compiler-plugin的配置,将编译目标调整为Java 13,生成的class文件版本可被Tomee 8.0.5内置的ASM7正常解析,无其他额外依赖改动。
    配置示例:
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.11.0</version>
      <configuration>
        <source>13</source>
        <target>13</target>
      </configuration>
    </plugin>
    
  • 方案2:手动替换可执行Jar内的ASM依赖
    完成可执行Jar打包后,手动将Jar包内的xbean-asm7-shaded依赖替换为API完全兼容的xbean-asm8-shaded版本,同步调整Jar内部类路径加载的包路径映射,保证类扫描逻辑能加载到替换后的ASM8组件。替换过程中需严格匹配依赖版本与Tomee 8.0.5的内部接口定义,避免出现类加载异常。
  • 方案3:切换至Tomee 9.x系列对应插件版本
    Tomee 9.x系列核心运行时已内置ASM9组件,原生支持解析Java 14及以上版本编译的class文件。直接将插件版本替换为9.x系列的GA稳定版即可,原有exec目标生成可执行Jar的配置逻辑无需修改,与8.0.5版本功能完全兼容。

注意:若项目开启了Java编译的预览特性,即使替换了高版本ASM依赖,也可能因字节码结构不被Tomee解析逻辑识别出现扫描失败,需关闭编译配置中的预览特性开关。

内容的提问来源于stack exchange,提问作者DJAMEL DAHMANE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 04:54:04