无法在Windows上安装Maven:"JAVA_HOME设置为无效目录"。

99

我严格按照 Maven教程 操作,但在Windows上仍无法安装Maven。

当我在命令提示符中运行以下命令:

E:\Documents and Settings\zach>mvn --version

我得到:

'mvn' is not recognized as an internal or external command, operable program or batch file.

我导航到了maven安装文件夹并运行了mvn --version,结果如下:

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

但是,当我运行java -version时,我得到了:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

所以我已经安装了Java。有人知道问题是什么吗?

16个回答

175
问题与您的路径有关。
  1. 确保目录“E:\java resources\apache-maven-2.2.0\bin”在您的命令搜索路径中。
  2. 确保JAVA_HOME变量引用您的Java安装的主目录。如果您从“E:\Sun\SDK\jdk\bin”执行Java,则JAVA_HOME变量需要指向“E:\Sun\SDK\jdk”。
  3. NB:JAVA_HOME不应以“\bin”结尾1

  4. 确保您没有在JAVA_HOME变量中放置分号2
  5. NB:JAVA_HOME应该是一个单独的目录名称,而不是由分号分隔的目录名称列表。

此外,请注意,如果您忽略了Maven on Windows指南中关于关键路径名中空格的建议,则可能会遇到问题。
"Maven,像许多跨平台工具一样,在重要路径名中包含空格字符时可能会遇到问题。"
"您需要安装Java SDK(例如从Oracle的下载站点),并且您应该将其安装在没有空格的路径名下,例如c:\ j2se1.6。"
"您需要解压缩Maven分发版。不要在源代码的中间解压缩它;选择一些位置(路径中没有空格!)并在那里进行解压缩。"
简单的解决方法是在不含空格的路径中重新安装Java或Maven。

1 - .... 除非您为安装位置选择了一个疯狂的名称。

2 - 显然,在Windows路径问题上的一种常见的“巫术”解决方案是在末尾添加分号。但总体上不建议这样做,而且在这里绝对行不通。


30

错误:JAVA_HOME 目录设置错误。 JAVA_HOME = "E:\Sun\SDK\jdk\bin" 请在环境变量中设置 JAVA_HOME,使其与 Java 安装位置相匹配。

JAVA_HOME 应该设置为 E:\Sun\SDK\jdkPATH 应该包含 %JAVA_HOME%\bin


13

我在安装Grails时遇到了这个问题。

问题出在我的JAVA_HOME设置为c:\sun\jdk\,而我的PATH中有%JAVA_HOME%bin

我将其更改为:JAVA_HOME="c:\sun\jdk" 且 PATH="%JAVA_HOME%\bin"

之后它就可以正常工作了。


10

我曾经遇到同样的问题,只需更新JAVA_HOME即可解决。

之前是这样的:C:\Program Files\Java\jdk1.6.0_45\bin,只需删除\bin就可以了。


4

由于我所在的工作地点存在安全限制,无法在我的基于Windows的个人电脑上设置环境变量。

我的解决方法是将%M2%中的mvn.bat文件复制到C:\WINNT中,并在批处理文件顶部添加以下内容:

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

虽然不是最好的解决方案,但它能够起作用。如果有人知道其他方法或解决方案,使标准环境变量无法设置到系统中,我会欢迎他们的回应。


3

我曾经遇到过同样的问题,但上述答案都没法解决,因为我的环境变量都设置得正确。我之前刚刚重新安装了Java。

后来我通过以下步骤解决了问题:

  1. 进入 C:\path\to\apache-maven-3.0.4\bin 目录并打开 mvn.bat 文件。
  2. 找到以下代码行 @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. 将其更正为正确的路径

我不确定这是否仅适用于Windows,但希望能对别人有所帮助!


2

经过多次失败的尝试,我找到了解决方案。

问题出在我总是在设置每个新变量时,在JAVA_HOME末尾加上";"。所以去掉这个分号即可。

同时,在用户变量中也要设置JAVA_HOME(当然不需要加分号)。


1
“...这是我设置每个新变量时总是放在末尾的原因?” - Stephen C

1

您应该设置JAVA_HOME或MAVEN_HOME,但不包括bin目录。例如: - JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_45 - MAVEN_HOME=C:\Program Files (x86)\apache-maven-3.1.1 现在, path=.....;%MAVEN_HOME%\bin;%JAVA_HOME%\bin, 它可以正常工作。


1
有时在Windows中,路径中的空格无法被正确识别。如果您遇到路径问题,路径看起来像 c:\Program Files\....,请尝试以旧的DOS格式更改它,例如 "C:\Progra~1\...。您可以使用 dir /x 来检查正确的语法(第三列)。在我的电脑上,JAVA_HOME 是(并且它有效)。

"C:\Progra~1\Java\jdk1.8.0_121"

在Windows 10中进行测试


0

使用 Windows 10

我遇到了问题...然后我完全删除了 JAVA_HOME 变量,只是在 PATH 中添加了 %JAVA_HOME%\bin,然后它就可以工作了!


1
谢谢。在Java_home变量末尾加上"/bin"后,它可以正常工作。 - Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接