IntelliJ无法运行Quarkus测试,报NoSuchMethodError错误
解决IntelliJ中Quarkus测试抛出NoSuchMethodError的问题
问题根源
命令行执行测试正常,但IntelliJ里报错的核心原因是Jandex版本冲突:
- QuarkusTestExtension依赖的旧版Jandex(多为2.x系列)中,
org.jboss.jandex.Indexer.index(java.io.InputStream)方法返回值为void - 项目实际引入了Jandex 3.0.5.FINAL,该版本中同方法返回
ClassInfo,方法签名不匹配触发报错 - 命令行测试正常是因为Maven/Gradle的依赖解析会优先使用Quarkus bom管理的版本,而IntelliJ直接运行时可能加载了冲突的高版本Jandex
修复步骤
1. 强制统一Jandex版本
在pom.xml中明确指定与Quarkus bom一致的Jandex版本,覆盖冲突的3.0.5版本:
<dependencyManagement> <dependencies> <dependency> <groupId>org.jboss</groupId> <artifactId>jandex</artifactId> <!-- 替换为你所用Quarkus版本对应的Jandex版本,例如2.4.2.Final --> <version>2.4.2.Final</version> </dependency> </dependencies> </dependencyManagement>
若未使用bom,直接在dependencies节点添加上述依赖,同时给其他引入Jandex的依赖添加排除规则,避免拉取3.0.5版本。
2. 刷新IntelliJ依赖缓存
- 点击右侧Maven面板的刷新按钮(或按
Ctrl+Shift+O) - 执行
mvn clean install -DskipTests重新构建项目,确保依赖正确下载到本地仓库
3. 让IntelliJ复用Maven的运行逻辑
打开测试类的运行配置,在Build and run选项中勾选Delegate IDE build/run actions to Maven,让IntelliJ和命令行使用相同的依赖解析与构建流程。
验证
重新在IntelliJ中点击测试类旁的运行按钮,确认测试正常执行,不再抛出NoSuchMethodError错误。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

