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

时间:2009-07-26 08:44:15

标签: java maven-2

我跟着the Maven tutorial写了这封信,但我还是无法在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 个答案:

答案 0 :(得分:170)

问题与你的道路有关。

  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应该是单个目录名,而不是以分号分隔的“PATH-like”目录名列表。

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

      

    “Maven和许多跨平台工具一样,在重要路径名中有空格字符时会遇到的问题。”

         

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

         

    “你需要解压缩Maven发行版。不要在源代码中间解压缩它;选择一些位置(路径中没有空格的)并将其解压缩到那里。”

    对此的简单补救措施是在不同的位置重新安装Java或Maven,以便不是路径中的空格


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

    2 - 显然,Windows路径问题的常见“伏都教”解决方案是最终敲击分号。一般不建议这样做,绝对不行。

答案 1 :(得分:29)

  

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

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

答案 2 :(得分:13)

我使用Grails安装遇到了这个问题。

问题是我的 JAVA_HOME c:\sun\jdk\而我的路径%JAVA_HOME%bin

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

之后有效。

答案 3 :(得分:10)

我遇到了同样的问题,刚刚更新了JAVA_HOME为我工作。

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

答案 4 :(得分: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%

不是最好的解决方案,但它有效。如果任何人有任何其他方式或解决办法,标准的环境变量无法进入系统,我欢迎他们的回应。

答案 5 :(得分: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. 类似的行
  4. 将其纠正到正确的路径
  5. 我不知道这是否特定于Windows,但它可能对某人有帮助!

答案 6 :(得分:2)

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

是“;”在JAVA_HOME的末尾,我总是把它放在我设置的每个新变量的末尾。 所以摆脱;。

JAVA_HOME也将它设置在用户变量中(没有“;”当然)

答案 7 :(得分: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 现在 路径= .....;%MAVEN_HOME%\ bin中;%JAVA_HOME%\ bin中 它工作正常

答案 8 :(得分: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中测试

答案 9 :(得分:0)

JAVA_HOME应该是这样的C:\ PROGRA~1 \ Java \ jdk

希望这会奏效!

答案 10 :(得分:0)

这似乎是老帖子,但我仍想分享这个问题是如何解决的。

对于没有管理员权限且打开命令提示符的用户,它在用户权限下运行。这意味着,您可能拥有类似C:\ Users \

的路径

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

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

希望,这有助于某人。

答案 11 :(得分: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

注意:%s中包含的项目如%M2%被分配变量。它看起来多余但必要。您可以输入以下内容确认一切正常:

java -version
javac -version
mvn -version

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

答案 12 :(得分:0)

使用Windows 10

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

答案 13 :(得分:-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。

希望这有助于某人。

答案 14 :(得分:-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并且事情有效。

希望它对某人有用。

答案 15 :(得分:-1)

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

我为我的JAVA_HOME环境变量值设置了这个:

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

何时需要:

"C:\Program Files\Java\jdk1.7.0_51"
再次出现分号!

:)

这就是我解决这个问题的方法,所以这应该是一种可能的解决方案。