英文:
On "mvn install" command errors with and without "sudo" ("JAVA_HOME" and "--release" flag respectively)
问题
根据您提供的内容,以下是翻译好的部分:
我有一个包含`.pom`文件的项目。根据说明,我应该首先运行`mvn install`命令。当我运行该命令时,我收到以下错误:
由于:org.apache.maven.plugin.MojoExecutionException引起的严重错误编译
由于:org.codehaus.plexus.compiler.CompilerException引发的无效标志:--release
由于:java.lang.IllegalArgumentException引发的无效标志:--release
但是,当我使用`sudo`运行该命令(`sudo mvn install`)时,我收到以下错误:
JAVA_HOME环境变量未正确定义
需要此环境变量来运行此程序
注意:JAVA_HOME应指向JDK而不是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)
此外,我考虑了许多与我的问题相关的帖子,例如[post1][1],[post2][2],[post3][3]和[post4][4](这些帖子与我的Ubuntu操作系统相反,是关于Windows上的Maven),或[post5][5](我没有相同的问题,因为我不在虚拟机上,也没有与`mvn -version`有关的任何问题。但是,mvn version命令指向了JRE,但所有环境变量都已正确设置为指向JDK)。但是,其中没有一个解决了我的问题。
希望这有助于您解决问题。如果您需要更多帮助,请随时提问。
英文:
I have a project that contains the .pom
file. Based on the instruction, I should run the mvn install
command first. When I run the command I get the following error:
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
But, when I run the command with sudo
(sudo mvn install
), I get the following error:
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
However, the result of mvn -version
command is as follows:
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"
On the other hand, I've added the followings to ~/.bashrc
file:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=/usr/share/maven/bin/mvn:$PATH
export PATH=$JAVA_HOME/bin:$PATH
The result of echo $JAVA_HOME
is:
/usr/lib/jvm/java-8-openjdk-amd64
and the result of java -version
is :
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)
Besides, I've considered many related posts to my issue, such as post1, post2, post3, and post4 (which are about maven in windows, opposite to my Ubuntu OS) or post5 (that I have not the same problem, as I am not on a VM or any problem with mvn -version
. However, mvn version command points to JRE, but all environment variables have been set correctly to point to the JDK). But, none of them resolve it.
答案1
得分: 0
我有一个类似的设置,而且它是有效的。您可以尝试这个设置,在可能的情况下尝试重新启动系统。
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.8
export PATH=${PATH}:${JAVA_HOME}/bin
英文:
I have a similar kind of setting, and that is working. You can try this setting, try restarting the system if possible.
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.8
export PATH=${PATH}:${JAVA_HOME}/bin
答案2
得分: 0
当您使用sudo
命令运行命令时,来自当前(非特权)shell的环境变量不会传递到运行命令的环境中。
尝试这样做:
$ export FOO=BAR
$ sudo export
您将看不到变量列表中有FOO
。
因此,当您运行sudo mvn ...
时,JAVA_HOME
设置不会传递给Maven,Maven也会显示此信息。
如果您想要传递所有环境变量,可以使用sudo -E
或类似选项。这在sudo
的手册条目中有解释。
英文:
When you run a command using sudo
, the environment variables from your current (non-privileged) shell are NOT passed through to the environment in which the command is run.
Try this:
$ export FOO=BAR
$ sudo export
and you won't see FOO in the list of variables.
So, when you run sudo mvn ...
the JAVA_HOME
setting is not being passed to Maven, and it says so.
If you want to pass all of the environment variables, use sudo -E
or similar. This is explained in the manual entry for sudo
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论