不存在的 JAR 的“IllegalStateException:没有文件或目录匹配”
Posted
技术标签:
【中文标题】不存在的 JAR 的“IllegalStateException:没有文件或目录匹配”【英文标题】:"IllegalStateException: No files nor directories matching" for non-existing JAR 【发布时间】:2017-03-03 14:16:44 【问题描述】:我最近尝试将我的 Gradle 版本升级到 SonarQube 插件 2.2 并遇到以下错误:
Caused by: java.lang.IllegalStateException: No files nor directories matching '[/opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-core/build/libs/spring-cglib-repack-3.2.4.jar' in directory /opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-aop
org.sonar.batch.scan.ProjectReactorBuilder.validateDirectories(ProjectReactorBuilder.java:302)
org.sonar.batch.scan.ProjectReactorBuilder.loadChildProject(ProjectReactorBuilder.java:217)
org.sonar.batch.scan.ProjectReactorBuilder.defineChildren(ProjectReactorBuilder.java:192)
org.sonar.batch.scan.ProjectReactorBuilder.execute(ProjectReactorBuilder.java:116)
org.sonar.batch.scan.ProjectScanContainer.projectBootstrap(ProjectScanContainer.java:120)
org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:98)
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:91)
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)
org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.executeOldVersion(BatchIsolatedLauncher.java:70)
org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
com.sun.proxy.$Proxy77.executeOldVersion(Unknown Source)
org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:238)
org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:93)
这个spring-cglib-repack-3.2.4.jar
确实存在于spring-core/build/libs/
文件夹中,因为我的构建是repackaging the cglib dependency 在custom jarjar task 中。
插件似乎正在spring-aop
文件夹下寻找该资源,因此出现异常。
请注意,相同的配置适用于 2.1 版本。
【问题讨论】:
这里有同样的问题。你有什么解决办法吗? 为什么文件丢失了?据我了解,您正在动态生成一些额外的 JAR 文件并将它们添加到编译类路径中。 SonarQube 需要这些 JAR 来执行分析。您的意思是相反的票:它过滤不存在的文件。所以我很惊讶它适用于 2.1 而不是 2.2。 刚刚测试到结帐大师。 ./gradlew sonarqube 工作正常。然后更新到 2.2 仍然可以正常工作。查看文件夹“spring-core/build/libs/”,JAR 存在。 让我再试一次并追踪我们自构建以来应用的更改。非常感谢您尝试重现该问题! 刚刚解决了这个问题,因为 jar 确实存在。我再次尝试使用 jdk8u102 和 jdk8u112 以及 sonarqube 4.5.6 和 5.2 的本地实例 - 仍然失败并出现相同的异常。请注意,这个问题也发生在我们的公共 CI 上。关于如何缩小问题根源的任何想法? 【参考方案1】:我必须输入类文件的路径
sonar.java.binaries=target/
声纳项目.properties
声纳 6.2 版
【讨论】:
我不仅必须设置 sonar.java.binaries,而且必须将其设置为绝对路径才能使其工作。【参考方案2】:已提交拉取请求以解决此问题。我已经创建了一张票并将发布一个错误修复: https://jira.sonarsource.com/browse/SONARGRADL-30
【讨论】:
请don't post identical answers to multiple questions。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答。以上是关于不存在的 JAR 的“IllegalStateException:没有文件或目录匹配”的主要内容,如果未能解决你的问题,请参考以下文章
不存在的 JAR 的“IllegalStateException:没有文件或目录匹配”
springcloud报springboot jar包不存在