SonarQube扫描Java项目遇索引失败错误,求助排查
本地SonarQube扫描Java项目时出现Elasticsearch索引失败错误
执行mvn sonar:sonar命令时触发以下错误:
Unrecoverable indexation failures: 1 errors among 1 requests. Check Elasticsearch logs for further details
提示需查看Elasticsearch日志,但在SonarQube主目录未找到相关文件,已附上该目录及/var/log目录的截图。
环境信息
- SonarQube版本:9.8.0.63668(通过
sonar -v确认路径为/opt/homebrew/Cellar/sonarqube/9.8.0.63668/libexec/bin/macosx-universal-64/sonar.sh) - Maven Sonar插件版本:3.9.0.2155
- JaCoCo插件版本:0.8.7
- 项目Java版本:17
pom.xml中的Sonar配置片段
<jacoco-maven-plugin.version>0.8.7</jacoco-maven-plugin.version> <sonar.version>3.9.0.2155</sonar.version> <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Edit this URL for sonarQube server --> <sonar.host.url>http://localhost:9000/</sonar.host.url> <sonar.login>myToken</sonar.login> <!-- Sonar-JaCoCo properties --> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> <sonar.jacoco.reportPaths>${basedir}/target/jacoco.exec</sonar.jacoco.reportPaths> <sonar.web.accessLogs>true</sonar.web.accessLogs> <java.version>17</java.version> <sonar.exclusions>**/entity/**</sonar.exclusions> <sonar.test.exclusions>src/test/**/*</sonar.test.exclusions> </properties> </profile>
排查与解决步骤
1. 定位Elasticsearch日志的正确位置
SonarQube自带的Elasticsearch日志默认存储在主目录的logs/es子文件夹,你的日志路径应为:/opt/homebrew/Cellar/sonarqube/9.8.0.63668/libexec/logs/es
如果该路径无日志:
- 检查SonarQube配置文件
conf/sonar.properties中的sonar.path.logs参数,确认自定义日志目录 - macOS Homebrew安装的SonarQube,日志可能被重定向到
/var/log/sonarqube/目录
2. 常见问题修复方案
(1) Elasticsearch内存不足
编辑conf/sonar.properties调整Elasticsearch内存分配,根据机器配置适当调高:
sonar.search.javaOpts=-Xmx1G -Xms1G -XX:+HeapDumpOnOutOfMemoryError
修改后重启SonarQube服务:
brew services restart sonarqube
(2) 索引冲突或损坏
停止SonarQube服务,删除Elasticsearch数据目录(注意:此操作会清空所有历史扫描数据),再重启服务:
brew services stop sonarqube rm -rf /opt/homebrew/Cellar/sonarqube/9.8.0.63668/libexec/data/es7/* brew services start sonarqube
(3) Java版本兼容性验证
SonarQube 9.8.0要求运行环境为Java 11或17,确认SonarQube使用的Java版本符合要求:
- 执行
echo $JAVA_HOME查看当前Java路径,确保指向Java 11或17 - 若路径不符,修改
conf/sonar.properties中的sonar.java.home参数,指定正确的Java安装路径
(4) JaCoCo报告有效性检查
- 先执行
mvn clean test jacoco:report确保target/jacoco.exec文件生成且有效 - 注意:
sonar.jacoco.reportPaths在新版SonarQube中已被废弃,建议替换为sonar.jacoco.xmlReportPaths(需配合JaCoCo生成XML报告)
内容的提问来源于stack exchange,提问作者Francislainy Campos
相关产品推荐
相关产品推荐

