SonarQube cli扫描gradle工程,设置了sonar.java.binaries=build/classes,但是执行的时候报错:java.lang.IllegalStateException: No files nor directories matching 'build/classes'

作者
2025-07-07阅读 33

1、背景

SonarQube的版本:v25.6.0.109173

SonarScanner的版本:SonarScanner CLI 7.1.0.4889

2、执行的命令行

sonar-scanner -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://10.255.1.2:9000" -D"sonar.token=sqp_06d53222cc21b1394b4a7ed50d77e9" -D"sonar.java.binaries=build/classes"

主要是设置了:-D"sonar.java.binaries=build/classes"

然后执行这个命令之后,报错

主要的错误信息:java.lang.IllegalStateException: No files nor directories matching 'build/classes'

18:59:28.084 INFO  Quality profile for java: Sonar way
18:59:28.085 INFO  Quality profile for xml: Sonar way
18:59:28.085 INFO  ------------- Run sensors on module projectName
18:59:28.367 INFO  Load metrics repository
18:59:28.529 INFO  Load metrics repository (done) | time=162ms
18:59:31.742 INFO  Sensor JavaSensor [java]
18:59:31.842 ERROR Invalid value for 'sonar.java.binaries' property.
18:59:31.927 ERROR Error during SonarScanner Engine execution
java.lang.IllegalStateException: No files nor directories matching 'build/classes'
        at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:125)
        at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:53)
        at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:316)
        at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:250)
        at org.sonar.java.JavaFrontend.<init>(JavaFrontend.java:92)
        at org.sonar.plugins.java.JavaSensor.execute(JavaSensor.java:111)
        at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:69)
        at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
        at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
        at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
        at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
        at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:80)
        at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
        at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
        at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:212)
        at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:208)
        at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:178)
        at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
        at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
        at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:339)
        at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
        at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
        at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:142)
        at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
        at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
        at org.sonar.scanner.bootstrap.ScannerMain.runScannerEngine(ScannerMain.java:150)
        at org.sonar.scanner.bootstrap.ScannerMain.run(ScannerMain.java:67)
        at org.sonar.scanner.bootstrap.ScannerMain.main(ScannerMain.java:53)

18:59:32.127 INFO  EXECUTION FAILURE
18:59:32.130 INFO  Total time: 3:14.380s

3、我的解决方法

在项目中创建一个文件,把sonar.java.binaries这个参数设置成这个新建的文件夹的路径

比如,我在项目中创建了一个temp文件夹

这样的话,我的执行命令就变成了

sonar-scanner -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://10.255.1.2:9000" -D"sonar.token=sqp_06d53222cc21b1394b4a7ed50d77e9" -D"sonar.java.binaries=D:\BawGit\test\service\temp"

然后在执行扫描命令就没问题了

4、特别的地方

以上是我在gradle的工程中发生的,在maven项目中,把sonar.java.binaries设置成"target/classes"就没有问题



全部评论

头像
乌兔
前端开发
私信
获得点赞 445
文章被阅读 31,261