Java8 项目上的 SonarQube 给出 jacoco-Exception

问题描述 投票:0回答:10

我刚刚下载了最新版本,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"
java sonarqube jacoco java-8
10个回答
14
投票

我从 SonarQube 邮件列表中获取了丢失的信息... 总结一下:

要让 Java8 maven-build 在 SonarQube-4.3 上运行:

  • 安装sonarqube-4.3,并启动服务器。

  • 登录 web-gui => 设置 => 更新中心 => 插件更新 => Java => 点击“升级到 2.2.1”

等待一分钟左右升级完成...然后关闭+重新启动 sonarqube。 返回升级中心并验证您是否有插件: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

就是这样。


7
投票

在 java 11 中我遇到了这个问题,我修复了将其添加到我的 gradle 属性中的问题:

jacoco {
  toolVersion = "0.8.4"
}

3
投票

如果您使用 gradle 运行 jacoco,他们会将 jacoco 更新到最新版本。 我也面临类似的问题,并在以下更改后得到修复

Java 11 和 Gradle

jacoco {
    toolVersion = "0.8.4"
}

2
投票

当 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版本。)


1
投票

SonarQube 4.3 嵌入了 Java 插件 2.1,而 http://jira.codehaus.org/browse/SONARJAVA-482 已在版本 2.2 中修复。因此,通过将 Java 插件升级到版本 2.2.1,应该可以解决您的问题。


1
投票

设置

$JAVA_HOME
解决了我的问题。


0
投票

我们也有同样的问题。我们所做的是重新安装 sonarqube 4.3,并且已经安装了 Java 8。然后针对声纳进行分析。如果您之前已经安装了 sonar/java 7 并对其进行了分析,则 sonar 似乎安装了一些导致这些故障的插件。如果您仅重新安装声纳和java 8(不要删除mysql数据库等...所以历史记录完好无损)-重新运行您的分析,它似乎可以解决插件的问题。


0
投票

我做了以下更改来解决这个问题。我使用了两个步骤,第一个是更新最新版本中的

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.*']

            }
        }
    }

欲了解更多信息,请查看链接点击这里


0
投票

我在java 8下遇到了同样的问题,我只是将jacoco的版本从0.7.9更改为0.8.2


0
投票

我在 IntelliJ 中运行单元测试用例时遇到此问题。我的项目版本是 Java 8,但我的 IntelliJ 指向 Java 17。

通过更改 SDK 将我的 IntelliJ 改回 Java 8 文件 -> 项目结构 -> 平台设置 -> SDK 和 文件 -> 设置 -> 构建、执行和部署 -> 构建工具 -> Gradle -> Gradle JVM 下拉菜单

© www.soinside.com 2019 - 2024. All rights reserved.