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

嵌入式Tomcat加载错误JAXB依赖的原因及解决办法

问题分析与解决

核心原因

  1. 依赖冲突:项目中存在间接依赖引入了jaxb-core 2.3.0版本,且该依赖的配置存在错误,导致Tomcat的JarScanner在解析类路径时,错误地将jaxb-api.jar的路径指向了jaxb-core 2.3.0的目录下。
  2. 本地仓库异常:本地Maven仓库中可能残留了jaxb-core 2.3.0的错误文件或缓存,导致路径解析混乱。
  3. JDK与旧版JAXB兼容性:你使用的是高版本JDK(从报错栈的java.base包可判断是JDK11+),而jaxb 2.2.11是适配JDK8的旧版本,二者兼容性不足可能触发依赖解析异常。

解决步骤

1. 排查并修复依赖冲突

执行Maven命令查看依赖树,定位引入jaxb-core 2.3.0的来源:

mvn dependency:tree -Dincludes=com.sun.xml.bind:jaxb-core

找到对应的依赖后,在pom.xml中排除该冲突版本:

<!-- 示例:假设是xxx:yyy依赖引入了jaxb-core 2.3.0 -->
<dependency>
  <groupId>xxx</groupId>
  <artifactId>yyy</artifactId>
  <version>zzz</version>
  <exclusions>
    <exclusion>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

2. 清理本地Maven仓库

删除本地仓库中错误的jaxb-core 2.3.0目录(路径为/Users/yb/.m2/repository/com/sun/xml/bind/jaxb-core/2.3.0),然后执行命令重新下载依赖:

mvn clean install -U

-U参数强制更新依赖,确保本地仓库中的Jar包与pom配置一致。

3. 调整Tomcat JarScanner配置(临时规避)

如果暂时无法定位依赖冲突,可以修改代码让Tomcat跳过有问题的Jar扫描:

Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
Context context = tomcat.addWebapp("", "/tmp/my-webapp");

// 获取JarScanner并配置跳过规则
StandardJarScanner jarScanner = (StandardJarScanner) context.getJarScanner();
jarScanner.setScanManifest(false);
// 跳过jaxb相关Jar的扫描
jarScanner.setSkipJarNames("jaxb-api.jar,jaxb-core.jar,jaxb-impl.jar");

tomcat.start();
tomcat.getServer().await();

4. 升级JAXB版本适配高版本JDK

将JAXB依赖升级到2.3.1版本(与Tomcat9及高版本JDK兼容性更好),修改pom.xml:

<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-core</artifactId>
  <version>2.3.1</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.1</version>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:45:27