Dotnet SonarScanner检测不到Java但JAVA_HOME已配置的问题排查求助
Dotnet SonarScanner检测不到Java但JAVA_HOME已配置的问题排查求助
看起来你遇到的问题核心是JAVA_HOME的配置路径错误,我帮你梳理下问题细节和解决步骤:
你的问题场景
执行SonarScanner结束命令时触发找不到Java的错误:
~/project$ /usr/bin/dotnet sonarscanner end /d:sonar.login="admin" /d:sonar.password="user"
错误日志如下:
SonarScanner for MSBuild 5.5.3 Using the .NET Core version of the Scanner for MSBuild Post-processing started. Calling the SonarScanner CLI... Could not find 'java' executable in JAVA_HOME or PATH. The SonarScanner did not complete successfully 20:05:32.56 Post-processing failed. Exit code: 1
你的Java本身是正常可用的(java --version能正常输出OpenJDK 11的信息),但环境变量的配置方式不符合SonarScanner的预期。
核心问题:JAVA_HOME配置错误
你当前的JAVA_HOME指向的是具体的Java可执行文件路径:
echo $JAVA_HOME # 输出:/usr/lib/jvm/java-11-openjdk-amd64/bin/java
但JAVA_HOME的正确配置应该是JRE/JDK的根目录,而不是bin/java这个具体文件。同时你的PATH也直接添加了java文件路径,正确的做法是把JRE/JDK的bin目录加入PATH。
修复步骤
修正环境变量配置
打开用户级配置文件~/.bashrc(如果需要全局生效可以修改/etc/profile),找到设置JAVA_HOME和PATH的行,替换为:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH保存后执行以下命令让配置立即生效:
source ~/.bashrc验证配置是否正确
重新打开一个终端(避免缓存影响),依次执行以下命令检查:echo $JAVA_HOME # 应输出:/usr/lib/jvm/java-11-openjdk-amd64 echo $PATH # 开头应包含:/usr/lib/jvm/java-11-openjdk-amd64/bin which java # 应指向:/usr/lib/jvm/java-11-openjdk-amd64/bin/java关于C#插件的疑问
不需要手动编译和添加C#插件,SonarQube 8.9.x社区版已经默认集成了C#代码分析所需的插件,所以这不是当前问题的原因,先解决Java环境变量问题即可。
备注:内容来源于stack exchange,提问作者Машина
相关产品推荐
相关产品推荐

