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


98

我遵循了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。有人知道是什么问题吗?

Answers:


172

问题与您的路径有关。

  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”。

    注意:JAVA_HOME不应以“ \ bin” 1结尾。

  3. 确保没有在JAVA_HOME变量2中放入分号。

    注意:JAVA_HOME应该是一个目录名称,而不是用分号分隔的目录名称的“类似路径”列表。

另请注意,如果您忽略了Windows Maven中有关键路径名中空格的说明,则可能会遇到问题。

“当许多重要的路径名中包含空格字符时,Maven就像许多跨平台工具一样会遇到问题。”

“您需要安装Java SDK(例如,从Oracle的下载站点下载),并且应将其安装到没有空格的路径名,例如c:\ j2se1.6。”

“您需要解压缩Maven发行版。不要在源代码中间对其进行解压缩;请选择某个位置(路径中没有空格!)然后在其中解压缩。”

解决此问题的简单方法是将Java或Maven重新安装在其他位置,以便路径中没有空格


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

2-显然,解决Windows路径问题的常见“巫毒”解决方案是在末尾打分号。通常不建议这样做,在这里绝对不起作用。


29

错误:JAVA_HOME被设置为无效目录。JAVA_HOME =“ E:\ Sun \ SDK \ jdk \ bin”请在您的环境中设置JAVA_HOME变量以匹配Java安装位置

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


13

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

问题是我的JAVA_HOMEc:\sun\jdk\,我的PATH已经%JAVA_HOME%bin

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

在那之后它起作用了。


10

我面临着同样的问题,只是更新了JAVA_HOME为我工作。

以前是这样的:C:\ Program Files \ Java \ jdk1.6.0_45 \ bin刚刚删除了\ bin,它对我有用。


4

由于当前工作场所的安全性限制,我无法在基于Windows的PC上设置环境变量。

我的解决方法是将mvn.bat文件从%M2%复制到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

我遇到了同样的问题,上述所有答案都没有为我解决,因为我的env变量都已设置。我刚刚重新安装了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

您应该设置不带bin目录的JAVA_HOME或MAVEN_HOME,例如:-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用来检查正确的语法(第三列)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

在我的电脑中,JAVA_HOME是(并且有效)

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

在Windows 10中测试



0

这似乎是过时的帖子,但我仍然想分享如何解决此问题。

对于没有管理员访问权限的用户,当他们打开命令提示符时,它将在用户特权下运行。这意味着,您可能具有类似C:\ Users \的路径

因此,当尝试C:\ Users \ XYZ> mvn --version时,它实际上是从用户变量而不是环境变量中的系统变量搜索JAVA_HOME路径。

因此,为了解决此问题,我们需要在用户变量中为JAVA_HOME创建一个环境变量。

希望这对某人有帮助。


Ermmm ...用户的环境变量将覆盖Windows上的系统环境变量。如果您有一个具有相同名称的系统和用户环境变量,那么该用户变量将“获胜”,并且应用程序将看到该变量。
2014年

0

运行eclipse以及运行Maven将需要您存储两个路径变量,一个存储在jdk1.7_x_x_x位置,另一个存储在jdk1.7_x_x_ \ bin中。如果您使用的是Windows,请在环境变量中执行以下操作:

1)创建一个名为JAVA_HOME的USER变量。将此指向您的JAVA文件的位置。例如:“ C:\ Program Files \ Java \ jdk1.7.0_51”(除去引号)

2)在PATH下,将%JAVA_HOME%附加到PATH。这会将步骤1中的文件位置添加到PATH。这对MAVEN有好处

3)如果您使用的是eclipse,则需要将路径指向“ C:\ Program Files \ Java \ jdk1.7.0_51 \ bin”。现在将%JAVA_HOME%\ bin附加到路径的末尾。

4)您的路径应如下所示:C:\ Program Files(x86)\ Google \ google_appengine \; C:\ Users \ username \ AppData \ Roaming \ npm;%M2%;%JAVA_HOME%;%JAVA_HOME%\ bin

注意:%内包含的项目(如%M2%)已分配变量。它看起来多余,但有必要。您可以通过输入以下内容来确认一切正常:

java -version
javac -version
mvn -version

在comman提示符下键入的这三个语句中的每一个都不应返回错误。


步骤2)错误且不必要。Java工具链或Maven都不需要%JAVA_HOME%包含在“ PATH”变量中。(它不会造成任何实际伤害,但也没有任何好处。)参考-tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C

0

使用Windows 10

我面临问题..然后我完全删除了JAVA_HOME变量,只 在路径中添加了%JAVA_HOME%\ bin,然后它起作用了!!!为了我


1
谢谢。它适用于在Java_home变量的末尾添加“ / bin”
Rahul

-1

JDK已将java.exe的位置在1.6和1.7之间切换!!!

以我为例,我发现JDK的JAVA_HOME必须在末尾添加\ jre。mvn bat文件正在寻找java.exe,并在JAVA_HOME \ bin中寻找它。对于JDK 1.7则不存在;它在JAVA_HOME \ jre \ bin中。在JDK 1.6中,它位于JAVA_HOME \ bin中。

希望这对某人有帮助。


1
我相信这是不正确的。根据Java 7的官方Oracle文档(docs.oracle.com/javase/7/docs/technotes/tools/windows/…),在JDK安装中,“ java”命令同时出现在“ JAVA_HOME \ bin”和“ JAVA_HOME \ jre \ bin“。如果在您的安装中不是这样,则有人/东西弄乱了!
Stephen C

有趣。它不在我的/ bin目录中,仅在我的/ jre / bin中。也许我需要重新安装最新的JDK
Brian Reinhold 2014年

-1

我的情况有些不同。

  • JAVA_HOME 正确设置为指向1.7
  • 其他的Maven项目在1.7功能上运行良好。
  • PATH 设置正确。
  • 一切都是最新的。

我简单的新Maven项目仍然无法正常工作。我注意到的是我跑步时原木的不同mvn clean install。对于我较早的Maven项目,它显示

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

但是对于我的新项目,它显示:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

因此,我查看了POM.xml并在旧项目的POM中注意到了这一点:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

基本上,此插件会告诉您要使用哪个编译器版本进行编译。刚刚将其添加到新项目中POM.xml,一切正常。

希望对某人有用。


这不是此问题的有效答案。症状有所不同。解决方案是不同的。
Stephen C

-1

我正在使用Windows 7,我遇到的问题很简单:

我的JAVA_HOME环境变量值为:

"C:\Program Files\Java\jdk1.7.0_51;"

当它想要的时候:

"C:\Program Files\Java\jdk1.7.0_51"

分号再次出现!

:)

这就是我解决此问题的方式,因此这应该是一个可能的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.