1、背景
SonarQube的版本:v25.6.0.109173
SonarScanner的版本:SonarScanner CLI 7.1.0.4889
执行的命令:
sonar-scanner -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://10.255.1.2:9000" -D"sonar.token=sqp_06d53222cc21b1394b4a7ed50d77e9"
2、报错信息
15:17:27.444 INFO Sensor JavaSensor [java]
15:17:27.571 ERROR Error during SonarScanner Engine execution
org.sonar.java.AnalysisException: Your project contains .java files, please provide compiled classes with sonar.java.binaries property, or exclude them from the analysis with sonar.exclusions property.
at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:70)
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)
15:17:27.665 INFO EXECUTION FAILURE
15:17:27.669 INFO Total time: 57.171s
3、原因及解决方式
对于java工程,sonar需要编译后的文件,找不到所以报错。
对于这个问题的解决方式
(1)重新编译一遍工程。maven的话就install,gradle就build。备注:这个方式我验证过,我这边是无效的,不解决问题
(2)按照提示,在命令中加入sonar.java.binaries这个参数,执行class的目录。比如target/classes
最新的命令就是:
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=target/classes"