Citrus WS模拟器启动报NoSuchFieldError: DEFAULT_CONFIG_CLASS
问题根因
报错核心是Citrus框架大版本依赖共存导致的类不兼容,和JDK版本无关,具体原因:
- 你手动引入的
com.consol.citrus:citrus-ws:3.1.0依赖完全错误:Citrus从3.0.0版本开始已经将所有组件的groupId从com.consol.citrus迁移为org.citrusframework,旧groupId下最高仅发布到2.8.0版本,指定3.1.0版本会拉取到不兼容的2.x时代Citrus核心类。 - Maven仅按
groupId+artifactId判定依赖是否重复,2.x版本(com.consol组)和3.x版本(org.citrusframework组)的Citrus包会被判定为完全独立的依赖,同时存在于classpath中,不会触发版本仲裁。 - 2.x版本的
CitrusSpringConfig类引用了Spring 5.3.x版本中已经移除的ConfigurationClassParser.DEFAULT_CONFIG_CLASS常量,触发NoSuchFieldError,这也是你之前排查Spring依赖没找到问题的原因——Spring本身版本是统一的,是旧版Citrus代码引用了Spring已删除的字段。
解决步骤
- 删除pom中手动添加的错误Citrus WS依赖块:
<!-- 直接删除整段 --> <dependency> <groupId>com.consol.citrus</groupId> <artifactId>citrus-ws</artifactId> <version>${citrus.version}</version> </dependency>
- 由于你生成的是SOAP模拟器项目,将通用simulator starter替换为WS场景专用starter,该starter会自动引入版本匹配的citrus-ws等相关依赖,无需手动指定版本:
<!-- 替换原有的citrus-simulator-starter依赖 --> <dependency> <groupId>org.citrusframework</groupId> <artifactId>citrus-simulator-starter-ws</artifactId> <version>${citrus.simulator.version}</version> </dependency>
- 清理旧构建产物并强制刷新依赖,执行以下命令:
mvn clean install -U
- 启动前可执行命令校验旧版Citrus包是否完全排除,执行结果为空即为正常:
mvn dependency:tree -Dincludes=com.consol.citrus:*
校验通过后直接启动项目即可,Java 11版本完全兼容该版本组合,不需要额外调整JDK版本。
内容的提问来源于stack exchange,提问作者Decly
相关产品推荐
相关产品推荐

