使用SonarQube 6.5与Sonar Scanner 3.0.3扫描时遇sonar.java.binaries报错求助
解决SonarQube扫描时的
sonar.java.binaries缺失错误 这个报错是因为SonarQube的Java代码分析器需要读取项目编译后的class文件才能完成深度分析,而你当前没有指定这些编译文件的存储路径,所以触发了这个异常。下面给你几种实用的解决方式:
1. 扫描命令中直接指定路径
如果你的项目是Maven结构,编译后的class文件默认在target/classes;如果是Gradle结构,一般在build/classes。你可以在执行sonar-scanner时直接追加参数指定路径:
sonar-scanner -Dsonar.java.binaries=target/classes
如果有多个class文件目录(比如包含测试类的目录),用逗号分隔即可:
sonar-scanner -Dsonar.java.binaries=target/classes,target/test-classes
2. 通过配置文件持久化设置
在项目根目录创建或编辑sonar-project.properties文件,添加以下配置(替换成你实际的class文件路径):
sonar.java.binaries=target/classes
要是你做的是多模块项目,可以针对每个模块单独配置路径,或者使用相对路径适配不同模块的结构。
3. 务必先完成项目编译
别忘了在执行扫描命令前,先编译你的Java项目!比如Maven项目先执行mvn clean compile,Gradle项目执行gradle build,不然就算指定了路径,目录里没有class文件,还是会触发同样的错误。
额外省心小技巧
如果你用的是Maven或Gradle的Sonar专用插件(比如sonar-maven-plugin),其实根本不需要手动指定sonar.java.binaries——插件会自动识别项目编译后的文件路径。这种情况下直接用插件执行扫描更省事:
Maven示例:
mvn sonar:sonar
Gradle示例:
gradle sonarqube
内容的提问来源于stack exchange,提问作者user1823924




