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

JBoss EAP 7.4.x依赖管理:Java8转Java11迁移中的依赖选择

Java 11 + JBoss EAP 7.4 迁移依赖配置指南

核心选型原则

  • 优先使用JBoss EAP官方定制的依赖版本(比如2.3.1.redhat-00002),并添加<scope>provided</scope>,彻底规避版本冲突
  • Java 11已移除JAXB这类EE模块,必须显式引入API和实现,但版本必须和JBoss EAP 7.4内置组件对齐

最优POM配置方案

第一步:引入JBoss EAP 7.4 BOM(推荐)

通过BOM统一管理所有服务器内置组件的版本,无需手动逐个指定版本,避免出错:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.redhat.jboss.eap</groupId>
            <artifactId>jboss-eap-parent</artifactId>
            <version>7.4.0.GA</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

第二步:配置JAXB依赖

引入BOM后,直接简写依赖即可,版本会自动与服务器对齐:

<!-- JAXB API - 由JBoss EAP提供,标记为provided避免打包冲突 -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>javax.xml.bind-api</artifactId>
    <scope>provided</scope>
</dependency>

<!-- JAXB实现 - 服务器已内置,标记为provided -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <scope>provided</scope>
</dependency>

<!-- 可选:本地编译/测试时若需要运行时依赖,可添加(同样用provided) -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <scope>provided</scope>
</dependency>

如果不想用BOM,也可以手动指定JBoss定制版本:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>javax.xml.bind-api</artifactId>
    <version>2.3.1.redhat-00002</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1.redhat-00002</version>
    <scope>provided</scope>
</dependency>

第三步:配置Java 11编译环境

确保Maven编译插件指定Java 11版本:

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

避坑提醒

  • 绝对不要混用jakarta.xml.bind和javax.xml.bind依赖:JBoss EAP 7.4基于Jakarta EE 8,依然使用javax.*命名空间,使用jakarta.*会直接导致类加载冲突
  • 所有服务器内置的组件都要加provided,避免打包时将服务器已有的jar包打进war/ear,引发版本冲突
  • 若项目有其他第三方依赖,也要检查是否和JBoss内置版本兼容,优先选择与BOM版本匹配的构件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:43:11