You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven项目从Java 8迁移至JDK 11时jboss-as-maven-plugin报错求助

JDK 8 迁移至 JDK 11 问题排查与解决方案

针对你在DocumentsStorageWS项目迁移中遇到的三个问题,逐个给出解决思路:

1. jboss.txn.ArjunaObjectStoreEnvironment服务启动失败

  • 核心原因:Arjuna事务管理器旧版本依赖JDK8内部实现,与JDK11模块化机制不兼容,或是所用JBoss组件版本未适配JDK11。
  • 解决步骤:
    • 升级JBoss事务相关依赖到支持JDK11的版本:比如将jboss-transaction-spi或arjuna系列依赖从7.x版本升级至9.x及以上。
    • 检查Arjuna配置文件(如jbossts-properties.xml),移除对JDK内部废弃路径的引用。
    • 若使用WildFly容器,确保容器版本为14及以上(WildFly从14开始全面支持JDK11)。

2. Infinispan子系统NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl

  • 核心原因:JDK9+对jdk.internal.reflect包进行封装限制,旧版Infinispan直接依赖该内部API。
  • 解决步骤:
    • 优先升级Infinispan依赖到10.x及以上版本(Infinispan 9.4开始部分支持JDK11,10.x版本完成全面适配)。
    • 若暂时无法升级,可在Maven编译/运行参数中添加开放模块权限的参数(临时 workaround,不推荐长期使用):
      --add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
      
    • 排查项目自定义代码,若存在直接引用jdk.internal.reflect包的逻辑,替换为标准Java反射API。

3. Web子系统javax.xml.stream.FactoryConfigurationError无法实例化__redirected.__XMLInputFactory

  • 核心原因:JDK11移除了JAXB、StAX等Java EE模块,且JBoss的__redirected系列工厂类在模块化环境下类加载机制变化。
  • 解决步骤:
    • 在pom.xml中手动引入JAXB及StAX相关依赖(JDK11不再内置这些模块):
      <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>2.3.1</version>
      </dependency>
      <dependency>
          <groupId>com.sun.xml.bind</groupId>
          <artifactId>jaxb-impl</artifactId>
          <version>2.3.1</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>javax.xml.stream</groupId>
          <artifactId>stax-api</artifactId>
          <version>1.0-2</version>
      </dependency>
      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.1.1</version>
      </dependency>
      
    • 使用mvn dependency:tree排查依赖冲突,排除JBoss容器自带的旧版stax-api或jaxb-api。
    • 检查Web子系统配置文件,确保XML工厂类配置未引用已废弃的内部实现。

通用迁移建议

  • 配置Maven编译插件适配JDK11:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>11</source>
            <target>11</target>
            <release>11</release>
        </configuration>
    </plugin>
    
  • 对所有第三方依赖进行兼容性排查,优先升级到标注支持JDK11的版本。
  • 使用IDE的JDK迁移工具(如IntelliJ的Migration Assistant)扫描项目中使用的废弃API,逐一替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:04:51