Quarkus运行@QuarkusTest测试抛出Jandex版本10不支持错误如何解决?
问题根因
该报错是因为你依赖的内置Jandex索引的模块使用了*Jandex 3.0+*版本生成索引,生成的索引版本号为10,而Quarkus 2.2.1.Final内置依赖的Jandex版本为2.x系列,最高仅支持版本号为9的索引,两者不兼容导致报错。你之前升级Jandex插件到1.2.0版本无法解决问题,是因为1.2.0版本的插件默认已经使用Jandex 3.x生成v10索引,反而不符合当前版本Quarkus的兼容要求。
解决方案
- 方案1:降级生成索引模块的Jandex插件版本
将生成内置Jandex索引的模块使用的Jandex插件版本降到1.1.0,同时强制指定插件使用的Jandex核心版本为2.4.2.Final,生成版本为9的兼容索引。Maven配置示例:<plugin> <groupId>org.jboss.jandex</groupId> <artifactId>jandex-maven-plugin</artifactId> <version>1.1.0</version> <dependencies> <dependency> <groupId>org.jboss.jandex</groupId> <artifactId>jandex</artifactId> <version>2.4.2.Final</version> </dependency> </dependencies> <executions> <execution> <id>make-index</id> <goals> <goal>jandex</goal> </goals> </execution> </executions> </plugin> - 方案2:强制升级Quarkus 2.2.1.Final内置的Jandex版本
在你当前的Quarkus服务根pom的dependencyManagement配置段中,强制指定Jandex版本为3.0.5.Final,让老版本Quarkus使用高版本Jandex识别v10索引,修改完成后需要做好全链路兼容性回归测试:<dependency> <groupId>org.jboss.jandex</groupId> <artifactId>jandex</artifactId> <version>3.0.5.Final</version> </dependency> - 方案3:升级Quarkus版本到2.16.Final及以上
Quarkus 2.16.Final之后的版本默认内置Jandex 3.x系列,原生支持v10版本的索引,无需额外修改Jandex相关配置。
验证方法
- 修复配置后执行
mvn clean install重新构建依赖模块和当前Quarkus服务 - 运行带
@QuarkusTest注解的测试类,确认报错消失
内容的提问来源于stack exchange,提问作者gkephorus
相关产品推荐
相关产品推荐

