【问题标题】:SonarQube ant runner fails with java.lang.IllegalStateExceptionSonarQube ant runner 因 java.lang.IllegalStateException 而失败
【发布时间】:2015-05-10 21:46:33
【问题描述】:

我正在将 SonarQube 从以前的 LTS 版本 升级到最新版本。 我了解到 ant 配置发生了变化,尤其是在二进制/库路径方面。

对于我们的一个(多模块)项目,我定义了以下属性:

<property name="myproject.sonar.java.libraries" value="${general-classpath},addons/myproject/lib/*.jar" />

ant属性${general-classpath}是一个逗号分隔的converted,每个元素指向一个特定的jar。

运行声纳时,它会失败并显示IllegalStateException

org.sonar.runner.impl.RunnerException: Unable to execute Sonar
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
        at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
        at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
        at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
        at org.sonar.runner.api.Runner.execute(Runner.java:100)
        at org.sonar.ant.SonarTask.launchAnalysis(SonarTask.java:53)
        at org.sonar.ant.SonarTask.execute(SonarTask.java:48)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:392)
        at org.apache.tools.ant.Target.performTasks(Target.java:413)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
        at org.apache.tools.ant.Main.runBuild(Main.java:811)
        at org.apache.tools.ant.Main.startAnt(Main.java:217)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.IllegalStateException: No files nor directories matching 'addons/myproject/lib/*.jar'
        at org.sonar.java.JavaClasspath.getFilesFromProperty(JavaClasspath.java:143)
        at org.sonar.java.JavaClasspath.init(JavaClasspath.java:92)
        at org.sonar.java.JavaClasspath.getElements(JavaClasspath.java:221)
        at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:92)
        at org.sonar.java.model.VisitorsBridge.<init>(VisitorsBridge.java:85)
        at org.sonar.java.JavaSquid.<init>(JavaSquid.java:85)
        at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:91)
        at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:79)
        at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70)
        at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:119)
        at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:194)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:233)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:226)
        at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:221)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
        at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
        at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)
        at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
        at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
        at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
        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.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
        ... 24 more

我的猜测是,SonarQube 定义的sonar.java.libraries 属性中的最后一个元素会导致:addons/myproject/lib/*.jar

与此模式匹配的 Jarfile 确实存在。
任何帮助表示赞赏。

【问题讨论】:

    标签: java ant sonarqube


    【解决方案1】:

    尝试在最后删除“.jar”,它应该可以工作。事实上,由于一些未知的原因,SonarSource 不想更新http://docs.sonarqube.org/display/SONAR/Java+Plugin 的文档。见http://sonarqube.15.x6.nabble.com/Very-misleading-documentation-of-sonar-java-binaries-and-sonar-java-libraries-td5031803.html

    【讨论】:

    • 感谢您的提示。我会试试的。但是,引用的问题jira.codehaus.org/browse/SONARJAVA-160 肯定将 *.jar 列为有效模式。因此,这似乎不仅是(仅)一个文档错误,而且还是一个实现错误。我会及时通知你。
    • 不幸的是,您的提示没有帮助。在这种情况下会引发相同的异常。
    • @David,我将在邮件列表中回复你,但你的陈述是错误的。
    • 您确定路径吗?你试过**/addons/myproject/lib/* 吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-15
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2017-07-05
    • 2016-03-30
    • 2019-06-23
    相关资源
    最近更新 更多