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

如何解决Java11运行时出现javax/xml/bind/JAXBException类缺失问题

问题判断

该问题属于典型的JDK版本兼容问题
Java 8 及更早版本的JDK默认内置了JAXB(Java Architecture for XML Binding)的API和实现类,从Java 9 引入模块化机制后,所有Java EE相关组件被从JDK核心库中移除,Java 11 更是彻底删除了相关内置模块,因此高版本JDK环境下运行依赖JAXB的代码会出现类缺失报错。
你当前只引入了JAXB的运行时实现包,缺失JAXB的API包,javax.xml.bind.JAXBException属于API层定义的类,因此运行时找不到。同时由于报错触发在sonar-maven-plugin执行阶段,还需要考虑插件运行时的类加载隔离问题。

解决方案

按优先级从高到低尝试以下方案:

  • 方案1:补全项目层面的JAXB依赖
    在pom.xml中新增JAXB API依赖,完整依赖配置如下:
    <!-- JAXB API 核心包 -->
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <!-- JAXB 运行时实现包 -->
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.3</version>
    </dependency>
    
  • 方案2:为sonar插件单独添加依赖
    如果补全项目依赖后仍有报错,说明sonar插件的类加载器隔离了项目依赖,需要给插件单独配置依赖:
    <build>
      <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.9.0.2155</version>
            <dependencies>
                <dependency>
                    <groupId>javax.xml.bind</groupId>
                    <artifactId>jaxb-api</artifactId>
                    <version>2.3.1</version>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jaxb</groupId>
                    <artifactId>jaxb-runtime</artifactId>
                    <version>2.3.3</version>
                </dependency>
            </dependencies>
        </plugin>
      </plugins>
    </build>
    
  • 方案3:执行命令时附加JVM参数(仅兼容Java9/10,不推荐Java11使用)
    执行sonar扫描命令时添加模块启动参数:
    mvn sonar:sonar --add-modules java.xml.bind

内容的提问来源于stack exchange,提问作者Champ-Java

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:02