Java8升级至Java11、Spring4.3升5.3.1时遇Thucydides插件报错
解决方案
问题根源
你使用的net.thucydides.maven.plugins:maven-thucydides-plugin:0.9.268是较老版本,依赖的是javax.xml.bind包,但Java 11已移除该内置模块;而你添加的jakarta.xml.bind-api是Java EE迁移到Jakarta后的新包(包名从javax.xml.bind改为jakarta.xml.bind),旧插件无法识别这个新命名空间,因此报错依旧。
具体修复步骤
1. 添加javax版本的JAXB依赖
在项目的<dependencies>中加入以下依赖,直接提供旧插件需要的javax.xml.bind类:
<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>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>
2. 给Thucydides插件单独添加依赖
Maven插件的类加载器和项目主类加载器是隔离的,需要在插件配置里也声明这些依赖,确保插件运行时能获取到JAXB类:
<build> <plugins> <plugin> <groupId>net.thucydides.maven.plugins</groupId> <artifactId>maven-thucydides-plugin</artifactId> <version>0.9.268</version> <dependencies> <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> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> </plugin> </plugins> </build>
3. 可选:升级Thucydides插件版本
如果上述方法仍有问题,建议尝试升级插件到支持Java 11的版本(比如0.9.270或更高),新版本通常已适配Java 9+的模块变化,可能无需手动添加JAXB依赖。
内容的提问来源于stack exchange,提问作者Ankitha Mohan
相关产品推荐
相关产品推荐

