Java8项目上的SonarQube给了jacoco一个例外
我刚下载了最新版本SonarQube 4.3, 然后尝试使用以下工具构建java-8项目:Java8项目上的SonarQube给了jacoco一个例外,java,sonarqube,jacoco,java-8,Java,Sonarqube,Jacoco,Java 8,我刚下载了最新版本SonarQube 4.3, 然后尝试使用以下工具构建java-8项目: mvn clean install mvn sonar:sonar 这给了我下面的例外 谷歌搜索,我得到的印象是,这是一个早期的问题,应该得到解决 SonarQube 4.3支持java-8吗 或者任何线索,问题是什么 ------------------------------------------------------- T E S T S --------------------
mvn clean install
mvn sonar:sonar
这给了我下面的例外
谷歌搜索,我得到的印象是,这是一个早期的问题,应该得到解决
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 4.3嵌入了Java插件2.1,而在版本2.2中已经修复。因此,通过将Java插件升级到2.2.1版,应该可以解决您的问题 我从SonarQube邮件列表中得到了丢失的信息。。。 总结如下: 要使Java8 maven build在SonarQube-4.3上运行,请执行以下操作:
- 安装sonarqube-4.3并启动服务器
- 登录到web gui=>Settings=>Update Center=>Plugins Updates=>Java=>单击“升级到2.2.1”
- 要在Sonar中获得代码覆盖率,您现在需要使用以下命令进行构建:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install mvn sonar:sonar
就这样。我们也有同样的问题。我们所做的是重新安装Sonarqube4.3,其中已经安装了Java8。然后对声纳进行分析。如果您之前已经安装了sonar/Java7并对其进行了分析,sonar似乎安装了一些导致这些故障的插件。如果您只重新安装sonar和java 8(不要删除mysql数据库等,所以历史记录是完整的)-重新运行分析,它似乎可以解决插件的问题。当mvn使用JDK 1.8构建java 1.7项目时,我也遇到了同样的错误。解决方案很简单:我将jacoco插件版本更改为更新版本:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
org.jacoco
jacocomaven插件
0.7.6.201602180812
(项目之前使用的是0.6.3.201306030806版。)在java 11中,我遇到了这个问题,我修复了在gradle属性中添加这个问题:
jacoco {
toolVersion = "0.8.4"
}
如果您使用gradle运行jacoco,他们会将jacoco更新为最新版本。 我也面临着类似的问题,在下面的修改后得到了修复 Java11和Gradle
jacoco {
toolVersion = "0.8.4"
}
设置
$JAVA\u HOME
为我解决了这个问题。我做了以下更改来解决这个问题。我使用了两个步骤,第一个步骤是更新最新版本的jacoco
及其工具版本
,请在下面检查一下
classpath "com.dicedmelon.gradle:jacoco-android:0.1.4"
而工具版本
如下
jacoco {
toolVersion = "0.8.4"
}
请参考链接了解更多信息
现在检查第二步,我们在testOption
中使用excludes=['jdk.internal.*']
,如下所示
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
excludes = ['jdk.internal.*']
}
}
}
欲了解更多信息,请查看链接Thanx,它修复了上述异常。尽管如此,仍然存在一个问题:sonar gui没有显示任何单元测试覆盖率,只显示了%应该在哪里的破折号。有什么线索吗?我还面临Java 8的问题(SonarQube 4.3和Java插件升级到2.2.1),这是由以下原因引起的:org.sonar.api.utils.sonar异常:目录包含属于不同软件包的文件:E:\workspaceCDS\my\package请修复您的sourccode或使用sonar.skipPackageDesign=true继续分析。在org.sonar.plugins.java.bridges.ResourceIndex.loadSquidFilesAndPackages(ResourceIndex.java:94)上,这不是一个问题。我在某个地方读到,如果你将所有maven目标放在一个mvn命令中,可能会有问题,所以如果你使用Jenkins,我想你应该将构建命令放在一个带有“Execute shell”的自由式项目中,而不是一个专业项目。谢谢你,先生,你节省了数十亿美元!:)对于那些使用Jenkins的人,可以在那里指定Java版本。如果不是,则采用默认值。这对我很有效。类似地,我不得不使用JDK8将我的版本从
0.8.2
升级到0.8.2
,将jacoco插件升级到最新版本修复了我的问题。