【问题标题】:sonar-runner getting java.lang.ClassNotFoundException: org.picocontainer.Startable声纳运行器获取 java.lang.ClassNotFoundException:org.picocontainer.Startable
【发布时间】:2015-11-20 15:43:47
【问题描述】:

我将我的测试 Sonar 服务器升级到 5.2,并且正在使用 sonar-runner-2.5-RC1,并且在运行 sonar-runner 来分析我的代码时没有遇到任何问题。然后我将我的生产 Sonar 服务器升级到 5.2 并使用相同的命令行设置和 sonar-runner.properties 文件运行生产构建,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/Startable

然后我在我的“测试”构建机器上针对生产声纳服务器运行构建,它运行正确。所以在我看来,影响声纳运行器的生产构建机器肯定存在一些差异,但我无法弄清楚问题可能是什么。


我的声纳跑步者属性文件中只有:

sonar.sourceEncoding=UTF-8
sonar.sources=src
sonar.modules=svc1, \
  svc2

svc1.sonar.java.binaries=../build/gradle/svc1/classes/
svc1.sonar.projectName=SVC1

svc2.sonar.java.binaries=../build/gradle/svc2/classes/
svc2.sonar.projectName=SVC2

cli.sonar.language=py
cli.sonar.projectName=CLI

SONAR_RUNNER_OPTS='-Xmx2048m -XX:MaxPermSize=512m' sonar-runner-2.5-RC1/bin/sonar-runner
 -e
 -Dproject.settings=/workspace/build/workspace/sonar-runner.properties
 -Dsonar.host.url=http://192.XXX.XXX.X -Dsonar.projectKey=TEST
 -Dsonar.projectName=TEST-driver -Dsonar.branch=master
 -Dsonar.projectVersion=2.0.0.0 
 -Dsonar.java.libraries=/workspace/build/workspace/jars/*.jar,/workspace/build/workspace/build/gradle/portal/compile/lib/*.jar,/usr/lib64/jvm/java/lib/*.jar'

日志:

INFO: Runner configuration file: NONE
INFO: Project configuration file: /workspace/build/workspace/CH-coprhd-controller-master-sonar/coprhd-controller-sonar-runner.properties
INFO: SonarQube Runner 2.5-RC1
INFO: Java 1.7.0_71 Oracle Corporation (64-bit)
INFO: Linux 3.16.6-2-desktop amd64
INFO: SONAR_RUNNER_OPTS=-Xmx2048m -XX:MaxPermSize=512m
INFO: Error stacktraces are turned on.
INFO: User cache: /workspace/build/workspace/CH-coprhd-controller-master-sonar/.sonar/cache
INFO: Load global repositories
INFO: Load global repositories (done) | time=166ms
INFO: User cache: /workspace/build/workspace/CH-coprhd-controller-master-sonar/.sonar/cache
INFO: Load plugins index
INFO: Load plugins index (done) | time=3ms
INFO: Download sonar-issues-density-plugin-1.0.jar
INFO: Download sonar-javascript-plugin-2.8.jar
INFO: Download sonar-findbugs-plugin-3.3.jar
INFO: Download sonar-groovy-plugin-1.3.jar
INFO: Download sonar-build-stability-plugin-1.3.jar
INFO: Download sonar-xml-plugin-1.3.jar
INFO: Download sonar-web-plugin-2.4.jar
INFO: Download sonar-clover-plugin-3.0.jar
INFO: Download sonar-sonargraph-plugin-3.4.2.jar
INFO: Download sonar-python-plugin-1.5.jar
INFO: Download sonar-scm-git-plugin-1.1.jar
INFO: Download sonar-scm-svn-plugin-1.2.jar
INFO: Download sonar-checkstyle-plugin-2.4.jar
INFO: Download sonar-pmd-plugin-2.5.jar
INFO: Download sonar-java-plugin-3.7.1.jar
INFO: Download sonar-generic-coverage-plugin-1.1.jar
INFO: Download sonar-css-plugin-1.5.jar
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Process project properties
Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/Startable
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125)
    at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37)
    at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
    at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
    at org.sonar.plugins.issuesdensity.IssuesDensityPlugin.getExtensions(IssuesDensityPlugin.java:37)
    at org.sonar.batch.bootstrap.ExtensionInstaller.install(ExtensionInstaller.java:51)
    at org.sonar.batch.scan.ProjectScanContainer.addBatchExtensions(ProjectScanContainer.java:234)
    at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:119)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:98)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:85)
    at org.sonar.batch.bootstrap.GlobalContainer.executeAnalysis(GlobalContainer.java:153)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:110)
    at org.sonar.runner.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.sonar.runner.impl.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:61)
    at com.sun.proxy.$Proxy0.execute(Unknown Source)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:275)
    at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:166)
    at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:153)
    at org.sonar.runner.cli.Main.runAnalysis(Main.java:118)
    at org.sonar.runner.cli.Main.execute(Main.java:80)
    at org.sonar.runner.cli.Main.main(Main.java:66)
Caused by: java.lang.ClassNotFoundException: org.picocontainer.Startable
    at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
    at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
    at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
    ... 34 more
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 9,469ms last 8 cycles average is 1,183ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 28,431ms last 8 cycles average is 3,553ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 33,431ms last 8 cycles average is 4,178ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 2,661ms last 8 cycles average is 332ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 10,554ms last 8 cycles average is 1,319ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 9,480ms last 8 cycles average is 1,185ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 8,480ms last 8 cycles average is 1,060ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 11,104ms last 8 cycles average is 1,388ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 39,183ms last 8 cycles average is 4,897ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 4,995ms last 8 cycles average is 624ms
Build timed out (after 180 minutes). Marking the build as aborted.

【问题讨论】:

    标签: sonarqube sonar-runner


    【解决方案1】:

    此问题密度插件与 SQ 5.2 不兼容,不再维护。见http://docs.sonarqube.org/display/PLUG/Issues+Density+Plugin。此外,我建议在升级 SonarQube 之前打开页面管理 > 系统 > 更新中心。它显示不兼容插件的列表。

    【讨论】:

    • 更新中心没有抱怨问题密度插件。我删除了它并且不受支持的“构建稳定性”插件,现在声纳运行器以这种方式失败:18:23:48 线程“主”java.lang.NoClassDefFoundError 中的异常:org/sonar/squidbridge/commonrules/api/CommonRulesEngine跨度>
    • sonar-checkstyle-plugin-2.4.jar sonar-clover-plugin-3.0.jar sonar-cobertura-plugin-1.6.3.jar sonar-css-plugin-1.5.jar sonar-findbugs- plugin-3.3.jar sonar-generic-coverage-plugin-1.1.jar sonar-groovy-plugin-1.3.jar sonar-java-plugin-3.7.1.jar sonar-javascript-plugin-2.8.jar sonar-pmd-plugin -2.5.jar sonar-python-plugin-1.5.jar sonar-scm-git-plugin-1.1.jar sonar-scm-svn-plugin-1.2.jar sonar-sonargraph-plugin-3.4.2.jar sonar-web- plugin-2.4.jar sonar-xml-plugin-1.3.jar
    • 18:45:49 线程“main”中的异常 java.lang.NoClassDefFoundError: org/sonar/squidbridge/commonrules/api/CommonRulesEngine 18:45:49 at java.lang.ClassLoader.defineClass1(本机方法) 18:45:49 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 18:45:49 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 18:45:49 在 java .net.URLClassLoader.defineClass(URLClassLoader.java:449) 18:45:49 at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 18:45:49 at java.net.URLClassLoader$1.run(URLClassLoader .java:361)
    • 18:45:49 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 18:45:49 在 java.security.AccessController.doPrivileged(Native Method) 18:45: 49 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 18:45:49 在 org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125) 18:45:49 在 org.sonar.classloader。 ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37) 18:45:49 at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87) 18:45:49 at org.sonar.classloader.ClassRealm.loadClass(ClassRealm. java:76)
    • 18:45:49 在 org.sonar.plugins.javascript.JavaScriptPlugin.getExtensions(JavaScriptPlugin.java:78) 18:45:49 在 org.sonar.batch.bootstrap.ExtensionInstaller.install( ExtensionInstaller.java:51) 18:45:49 at org.sonar.batch.scan.ProjectScanContainer.addBatchExtensions(ProjectScanContainer.java:234) 18:45:49 at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer. java:119) 18:45:49 at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:98)
    【解决方案2】:

    问题原来是当 SONAR_USER_HOME 指向执行 sonar_runner 的同一个文件夹时,SonarQube 插件首先被下载到 $SONAR_USER_HOME,然后在分析开始时,该位置被删除以用于每个分析文件模块放在同一个文件夹中。确保 SONAR_USER_HOME 在不同的位置解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 2016-11-24
      • 2018-02-05
      • 2014-04-03
      • 1970-01-01
      • 2014-01-24
      • 2016-01-19
      相关资源
      最近更新 更多