[英]Analysing Gradle Java project with Sonarqube in Jenkins pipeline throws Exception on Jacoco Reports
[英]SonarQube on Java8-project gives jacoco-Exception
我刚刚下载了最新版本 SonarQube 4.3,然后尝试使用以下命令构建一个 java-8 项目:
mvn clean install
mvn sonar:sonar
这给了我下面的例外。
谷歌搜索,我觉得这是一个应该修复的早期问题......?
http://sonarqube.15.x6.nabble.com/Sonar-analyze-Java-1-8-project-Failure-td5023663.html
http://jira.codehaus.org/browse/SONARJAVA-482
SonarQube 4.3 是否支持 java-8?
或者任何线索,是什么问题?
-------------------------------------------------------
T E S T S
-------------------------------------------------------
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99)
at org.jacoco.agent.rt.internal_6effb9e.PreMain.createRuntime(PreMain.java:55)
at org.jacoco.agent.rt.internal_6effb9e.PreMain.premain(PreMain.java:47)
... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
at java.lang.Class.getField(Class.java:1690)
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136)
... 9 more
FATAL ERROR in native method: processing of -javaagent failed
Exception in thread "main"
我从 SonarQube 邮件列表中得到了缺失的信息......总结一下:
要让 Java8 maven-build 在 SonarQube-4.3 上工作:
安装 sonarqube-4.3,并启动服务器。
登录web-gui => 设置 => 更新中心 => 插件更新 => Java => 点击“升级到 2.2.1”
等待一分钟左右让升级完成...然后关闭+重新启动声纳。 返回升级中心并验证您有插件: Java 2.2.1
要在 Sonar 中获得代码覆盖率,您现在需要使用以下命令进行构建:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install mvn sonar:sonar
参考: http : //docs.codehaus.org/display/SONAR/JaCoCo+Plugin
就是这样。
在这里使用 java 11 我遇到了这个问题,我修复了在我的 gradle 属性中添加它的问题:
jacoco {
toolVersion = "0.8.4"
}
如果您使用 gradle 运行 jacoco,则将 jacoco 更新到最新版本。 我也遇到了类似的问题,经过以下更改后得到修复
Java 11 和 Gradle
jacoco {
toolVersion = "0.8.4"
}
当 mvn 使用 JDK 1.8 构建 Java 1.7 项目时,我遇到了同样的错误。 解决方案很简单:我将jacoco 插件版本更改为更新版本:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
(该项目之前使用的是 0.6.3.201306030806 版本。)
SonarQube 4.3 嵌入了 Java 插件 2.1,而http://jira.codehaus.org/browse/SONARJAVA-482已在 2.2 版中修复。 因此,通过将 Java 插件升级到 2.2.1 版,这应该可以解决您的问题。
设置$JAVA_HOME
为我解决了这个问题。
我们有同样的问题。 我们所做的是在已经安装了 Java 8 的情况下重新安装 sonarqube 4.3。 然后对声纳运行分析。 如果您之前已经安装了 sonar/java 7 并对其进行了分析,那么声纳似乎安装了一些导致这些故障的插件。 如果您只重新安装声纳和 java 8(不要删除 mysql 数据库等...所以历史是完整的) - 重新运行您的分析它似乎解决了插件的问题。
我已经做了以下更改来解决这个问题。我已经使用了两个步骤,第一个是更新最新版本的jacoco
及其toolVersion
版本,请在下面检查一次
classpath "com.dicedmelon.gradle:jacoco-android:0.1.4"
toolVersion
如下
jacoco {
toolVersion = "0.8.4"
}
请参阅链接以获取更多信息单击此处
现在检查它的第二步骤,其中,我们使用excludes = ['jdk.internal.*']
内testOption
象下面
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
excludes = ['jdk.internal.*']
}
}
}
有关其中的更多信息,请查看链接单击此处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.