SonarQube на Java8-проект дает jacoco-исключение

Я только что загрузил последнюю версию, SonarQube 4.3, затем попробуйте построить проект java-8 с помощью:

  mvn clean install
  mvn sonar:sonar

это дает мне исключение ниже.

Googling, у меня сложилось впечатление, что это более ранняя проблема, которая должна была быть исправлена... ?

http://sonarqube.15.x6.nabble.com/Sonar-analyze-Java-1-8-project-Failure-td5023663.html

http://jira.codehaus.org/browse/SONARJAVA-482

тут Поддержка Java-8 SonarQube 4.3?

или любая подсказка, в чем проблема?

-------------------------------------------------------
 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"

4 ответов


Я получил недостающую информацию из списка рассылки 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 + плагин

вот и все.


SonarQube 4.3 встраивает плагин Java 2.1, тогда как http://jira.codehaus.org/browse/SONARJAVA-482 исправлено в версии 2.2. Поэтому, обновив плагин Java до версии 2.2.1, это должно исправить вашу проблему.


У нас была такая же проблема. То, что мы сделали, это переустановить sonarqube 4.3 с уже установленной Java 8. Затем запустите анализ против сонара. Если у вас уже установлен sonar/java 7 и вы провели анализ против него, sonar, похоже, устанавливает некоторые плагины, которые вызывают эти сбои. Если вы переустановите только sonar и java 8 (не удаляйте базу данных mysql и т. д... так что история не повреждена) - повторно запустите свой анализ, похоже, решите проблему с плагинами.


Я получал ту же ошибку, когда mvn строил проект Java 1.7 с помощью JDK 1.8. Решение было простым: я изменил версия плагина jacoco в новой версии:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.6.201602180812</version>

(проект ранее использовал версию 0.6.3.201306030806.)