Maven 在 Ubuntu 上无法正确检测 JAVA_HOME

Cov*_*nce 5 java maven ubuntu-18.04

我正在尝试 Ubuntu 18.04.5 中的一些环境变量,试图让它们在每次重新打开终端时不会重置。

然而,现在 Maven 对每个命令的反应都出现以下错误:

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)

我很确定我$JAVA_HOME指向正确的目录,因为命令echo $JAVA_HOME返回:

/usr/lib/jvm/java-11-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

命令 $JAVA_HOME/bin/java --version返回:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

在此错误之前,我已将此行添加到/etc/environment

export JAVA14="/usr/lib/jvm/jdk-14"
export JAVA11="/usr/lib/jvm/java-11-openjdk-amd64"
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Run Code Online (Sandbox Code Playgroud)

以及以下几行~/.bashrc

source /etc/environment
Run Code Online (Sandbox Code Playgroud)

另外,经过一些编辑后,我已经返回了之前的所有内容,并且命令sudo update-alternatives --config java返回以下内容:

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64            1         manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
Run Code Online (Sandbox Code Playgroud)

所以选择了正确的路径,并且我没有更改任何其他update-alternatives配置。

我该怎么做才能让 Maven 再次看到 $JAVA_HOME?

编辑:

我通过直接编辑脚本并将可执行文件的/usr/share/maven/bin/mvn路径硬编码到变量中解决了这个问题。但是,我仍然对这个问题的正常解决方案感兴趣。javaJAVACMD