我是CS的超级新手,对UNIX/Bash词汇非常陌生。
我目前正在尝试安装Maven,我犯了一些错误,复制粘贴旧的安装说明(与错误的版本号),现在整个过程是如此混乱。我第一次尝试按照网站上给出的说明,这没有工作,然后我尝试了一些其他的,现在我担心,我留下了一个混乱,按照不同的说明集。
现在,如果我输入mvn -version
,我会得到以下结果:
JAVA_HOME环境变量定义不正确。运行此程序需要此环境变量。注意:JAVA_HOME应指向JDK,而不是JRE
最初,我的JAVA_HOME被设置为jdk-install-dir,它仍然给我上面的错误信息。(版本13.0.1),将该文件拖到我的主目录,并解压缩它。然后我将JAVA_HOME设置为解压缩的文件jdk-13.0.1.jdk,并更新了PATH变量。在所有这些操作之后,我仍然收到相同的错误消息,我不知道该怎么办。
作为参考,下面是一些相关环境变量的设置(我没有包括PATH中的无关信息):
~ echo $JAVA_HOME
jdk-13.0.1.jdk
~ echo $PATH
/usr/local/apache-maven/apache-maven-3.6.3/bin:/opt/apache-maven-3.6.3/bin:jdk-install-dir/bin:/usr/local/apache-maven/apache-maven-3.3.9/bin:/opt/apache-maven-3.6.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/allyson/apache-maven-3.6.3/bin:/Users/allyson/apache-maven-3.6.3/bin:jdk-12.0.1.jdk/bin:/Users/allyson/apache-maven-3.6.3/bin:JDK-13.0.1.jdk/bin
~ echo $M2
/usr/local/apache-maven/apache-maven-3.6.3/bin
~ echo $M2_HOME
/Users/allyson/apache-maven-3.6.3
有一件事我很好奇:对于M2和M2_HOME变量,是否应该是一个在我的主目录(/Users/allyson
)中,另一个用于/usr/local
?
4条答案
按热度按时间guykilcj1#
好的,深呼吸,我们将逐步介绍。每个环境变量都有一个用途,一旦你理解了这些用途,这就更有意义了。混合教程不一定是一个问题,但是你会想知道你在做什么,而不是盲目地从互联网上复制值。
JAVA_HOME
用于向系统环境标识Java运行时环境的位置。需要将其设置为JDK安装位置的 * 完整路径 。在Windows系统上,可能是C:\Program Files\Java\jdk-13.0.1
。在Linux系统上,您有更多的灵活性。常见位置可能是/opt/java/jdk-13.0.1
或/usr/local/java/jdk-13.0.1
。如果您在其他位置安装了JDK,那么您需要使用 that 路径。消息NB: JAVA_HOME should point to a JDK not a JRE
指的是安装maven时的一个常见错误-- maven需要JDK,而不是普通的JRE。这个错误非常常见,以至于每当JAVA_HOME
指向一个不是JDK的文件夹时,它都会输出这个警告(即使所讨论的文件夹 * 实际上不是JRE)。M2_HOME
应该被设置为安装maven的 full path(也就是你解压它的地方)。这或多或少地帮助maven“找到自己”,如果它出于任何原因需要的话。严格地说,这是不必要的。(我的系统上没有设置它,maven对我来说工作得很好)。这主要是为了设置 next 环境变量的方便。M2
是maven可执行文件所在文件夹的 * 完整路径 *。它 * 几乎总是 *$M2_HOME/bin
,但它肯定有可能做一些奇怪的事情,这将使您能够解决这些情况。显然,如果您没有指定$M2_HOME
,这将不起作用。这一个也不是严格必要的,主要是设置下一个的一种方便的方式。PATH
是Linux系统在命令行上键入程序名时查找要运行的程序的位置。您将需要确保maven和java可执行文件包含在:
分隔列表中。大多数Linux发行版已经在某种shell资源文件中为您设置了默认的PATH
。我想参考他们的文档来了解如何向路径中添加另一个条目,但是一个常见的习惯用法是PATH=$PATH:$M2
(它会将$M2
的值附加到$PATH
的值上,然后将结果存储回PATH
中。你需要做些别的事情。因此,TL;DR,如果您将JDK安装在
/opt/java/jdk-13.0.1
中,并将maven解压缩到/opt/maven/apache-maven-3.6.3
中,则您的 bear minimum 工作值为:如果你想要一整套
值得注意的是,大多数Java IDE都包含一个GUI,用于在IDE中设置maven和Java(这些设置通常只在 * 该IDE* 中有效)。对于初学者来说,这样做通常更容易上手和运行。
hjzp0vay2#
$JAVA_HOME应该是完整路径,而不是目录名称。
ijxebb2r3#
我在Ubuntu 20上工作,我自己的问题是关于JAVA_HOME变量中的jdk版本,它不是正确的版本。以下是我围绕这个问题的旅行:
首先,JAVA_HOME值是什么?
下一个问题/步骤,Java应用程序指向何处?(来源:(第10页)
因此,JAVA_HOME变量没有保持正确的值。让我们改变它:
现在测试结果是:
uttx8gqw4#
我这样做是为了未来我的BC在StackOverflow中的所有链接后,解决方案是检查
C:\Program Files\Maven\apache-maven-3.6.3\bin
上的mvn.cmd
文件...在line 52上,它设置了JDK,但它没有“
/bin
“,而我的OpenJDK 15
存储了java.exe这修复了Windows 11上的问题,但它可以作为其他操作系统的一个想法。希望它有帮助!