关于 "mvn install" 命令错误,有和没有 "sudo"(分别为 "JAVA_HOME" 和“--release”标志)

On "mvn install" command errors with and without "sudo" ("JAVA_HOME" and "--release" flag respectively)

我有一个包含 .pom 文件的项目。根据说明,我应该先 运行 mvn install 命令。当我 运行 命令时,出现以下错误:

Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling   

Caused by: org.codehaus.plexus.compiler.CompilerException: invalid flag: --release

Caused by: java.lang.IllegalArgumentException: invalid flag: --release

但是,当我 运行 使用 sudo (sudo mvn install) 的命令时,我得到以下错误:

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

但是mvn -version命令的结果如下:

Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_265, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-42-generic", arch: "amd64", family: "unix"

另一方面,我在 ~/.bashrc 文件中添加了以下内容:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=/usr/share/maven/bin/mvn:$PATH
export PATH=$JAVA_HOME/bin:$PATH

echo $JAVA_HOME的结果是:

/usr/lib/jvm/java-8-openjdk-amd64

java -version 的结果是:

openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-0ubuntu2~18.04-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)

此外,我已经考虑了很多与我的问题相关的帖子,例如 , , , and (which are about maven in windows, opposite to my Ubuntu OS) or (我没有同样的问题,因为我不在虚拟机上或 mvn -version 有任何问题.但是,mvn version 命令指向JRE,但所有环境变量都已正确设置为指向JDK)。但是,none 他们解决了它。

我有一种类似的设置,并且有效。你可以试试这个设置,有条件的可以试试重启系统

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.8

export PATH=${PATH}:${JAVA_HOME}/bin

当您 运行 使用 sudo 命令时,当前 (non-privileged) shell 的环境变量不会传递到命令所在的环境是 运行.

试试这个:

$ export FOO=BAR
$ sudo export

并且您不会在变量列表中看到 FOO。

因此,当您 运行 sudo mvn ... 时,JAVA_HOME 设置没有传递给 Maven,它是这么说的。

如果要传递所有环境变量,请使用 sudo -E 或类似的。 sudo.

的手册条目中对此进行了解释