Quarkus升级至3.8.3后quarkus:dev出现Jacoco类找不到错误
解决Quarkus 3.8.3 dev模式下Jacoco ClassNotFoundException问题
适配Jacoco插件版本
Quarkus 3.x(基于Java 17)需要兼容的Jacoco版本,建议使用0.8.10或更高版本,更新pom.xml中的Jacoco插件配置:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.10</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
移除手动添加的Jacoco依赖
不要在<dependencies>块中添加Jacoco的compile/runtime依赖,Quarkus的Jacoco插件会自动管理所需依赖,手动添加容易引发版本冲突或类路径问题。
调整dev模式下的Jacoco配置
Quarkus 3.x的dev模式默认不会自动处理Jacoco offline agent,若需在dev模式启用代码覆盖率,可通过Maven参数指定agent:
mvn quarkus:dev -Djacoco.agent.argLine="-javaagent:~/.m2/repository/org/jacoco/jacoco/0.8.10/jacoco-0.8.10.jar=destfile=target/jacoco.exec"
或者在Quarkus Maven插件中配置dev模式的JVM参数:
<plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.version}</version> <executions> <execution> <goals> <goal>build</goal> <goal>generate-code</goal> <goal>generate-code-tests</goal> </goals> </execution> </executions> <configuration> <jvmArgs>-javaagent:${settings.localRepository}/org/jacoco/jacoco/${jacoco.version}/jacoco-${jacoco.version}.jar=destfile=target/jacoco.exec</jvmArgs> </configuration> </plugin>
清理Maven缓存
执行以下命令清理本地仓库,重新下载所有依赖,避免缓存的旧Jacoco类文件导致冲突:
mvn clean install -U
检查自定义配置冲突
查看application.properties或启动参数中是否有quarkus.jacoco.*相关属性,确保配置与Quarkus 3.x版本兼容,避免强制设置offline agent引发加载问题。
内容的提问来源于stack exchange,提问作者nbe
相关产品推荐
相关产品推荐

