关于 "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
.
的手册条目中对此进行了解释
我有一个包含 .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)
此外,我已经考虑了很多与我的问题相关的帖子,例如 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
.