Ubuntu 20.04.3下.NET SonarScanner提示找不到Java但已配置JAVA_HOME的问题求助
Ubuntu 20.04.3下.NET SonarScanner提示找不到Java但已配置JAVA_HOME的问题求助
看起来你遇到的问题根源是JAVA_HOME和PATH的配置方式错误——虽然你已经安装了正确的OpenJDK 11版本,甚至给Java可执行文件加了执行权限,但环境变量的指向完全不符合SonarScanner的预期,导致它无法正确找到Java。
核心问题分析
SonarScanner在查找Java环境时,有两个关键预期:
JAVA_HOME必须指向JDK的安装根目录(而非具体的java可执行文件路径),它会自动去$JAVA_HOME/bin目录下寻找java;PATH中应该包含JDK的bin目录(而非直接添加java文件的完整路径),这样系统才能识别所有Java相关工具。
但从你的输出能看到,当前配置完全不符合要求:
JAVA_HOME被设为/usr/lib/jvm/java-11-openjdk-amd64/bin/java(指向了可执行文件,而非根目录)PATH中直接添加了/usr/lib/jvm/java-11-openjdk-amd64/bin/java(正确做法是添加/usr/lib/jvm/java-11-openjdk-amd64/bin目录)
修复步骤
1. 修正JAVA_HOME配置
打开你的用户级环境变量配置文件(比如~/.bashrc),如果需要全局生效可以修改/etc/profile(需sudo权限),找到设置JAVA_HOME的行,替换为:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
这个路径是你JDK的根目录,里面应该包含bin、lib、include等标准JDK子目录。
2. 修正PATH配置
同样在上述配置文件中,找到设置PATH的行,把错误的Java文件路径替换为JDK的bin目录:
export PATH=$PATH:$JAVA_HOME/bin
这样系统会自动将bin目录下的所有可执行文件(包括java、javac等)加入到可搜索路径中。
3. 刷新环境变量
执行命令让修改立即生效:
# 如果修改的是用户级配置 source ~/.bashrc # 如果修改的是全局配置 source /etc/profile
4. 验证配置正确性
执行以下命令确认环境变量是否正确:
# 应该输出JDK根目录,而非java文件路径 echo $JAVA_HOME # 输出中应该包含 /usr/lib/jvm/java-11-openjdk-amd64/bin echo $PATH # 再次验证Java是否能正常调用 java --version
5. 重新运行SonarScanner
现在你可以重新执行SonarScanner的结束命令,应该就能正常运行了:
~/project$ /usr/bin/dotnet sonarscanner end /d:sonar.login="admin" /d:sonar.password="user"
补充说明
你之前执行的sudo chmod +x /usr/lib/jvm/java-11-openjdk-amd64/bin/java其实是多余的——Ubuntu默认安装的OpenJDK的java文件已经拥有可执行权限,这并不是导致问题的原因。
备注:内容来源于stack exchange,提问作者Машина
相关产品推荐
相关产品推荐

