You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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环境时,有两个关键预期:

  1. JAVA_HOME必须指向JDK的安装根目录(而非具体的java可执行文件路径),它会自动去$JAVA_HOME/bin目录下寻找java;
  2. 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,提问作者Машина

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:19:30