【问题标题】:Unable to install Maven on Windows: "JAVA_HOME is set to an invalid directory"无法在 Windows 上安装 Maven:“JAVA_HOME 设置为无效目录”
【发布时间】:2010-11-14 02:51:33
【问题描述】:

我遵循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。有谁知道问题出在哪里?

【问题讨论】:

    标签: java maven-2


    【解决方案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 中测试

    【讨论】:

      【解决方案2】:

      使用 Windows 10

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

      【讨论】:

      • 谢谢。在Java_home变量末尾添加“/bin”后有效
      【解决方案3】:

      问题与你的路径有关。

      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 应该是单个目录名称,而不是用分号分隔的目录名称的“类路径”列表。

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

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

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

      “您需要解压 Maven 发行版。不要在源代码中间解压它;选择某个位置(路径中没有空格!)并在那里解压。”

      解决这个问题的简单方法是在不同的位置重新安装 Java 或 Maven,以便路径中没有空格


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

      2 - 显然,Windows 路径问题的常见“巫毒”解决方案是在末尾敲击分号。一般不推荐,这里绝对不行。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,刚刚更新了对我有用的 JAVA_HOME。

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

          • "... 我总是把它放在我设置的每个新变量的末尾" - 你为什么要这样做?
          【解决方案6】:

          你应该设置没有 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 它工作正常

          【讨论】:

            【解决方案7】:

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

            我的 JAVA_HOME 环境变量值有这个:

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

            当它想要时:

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

            分号又来了!

            :)

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

            【讨论】:

              【解决方案8】:

              我的情况有点不同。

              • 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 中,一切正常。

              希望对某人有用。

              【讨论】:

              • 这不是这个问题的有效答案。症状不同。解决方案不同。
              【解决方案9】:

              运行 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 -版本
              javac -版本
              mvn -version

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

              【讨论】:

              【解决方案10】:

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

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

              希望这对某人有所帮助。

              【讨论】:

              • 我认为这是不正确的。根据 Java 7 的 Oracle 官方文档 (docs.oracle.com/javase/7/docs/technotes/tools/windows/…),在 JDK 安装中,“java”命令同时出现在“JAVA_HOME\bin”和“JAVA_HOME\jre\bin”中。如果您的安装不是这样,那么有人/某事弄乱了它!
              • 有趣。它不在我的/bin 目录中,只是在我的/jre/bin 中。也许我需要重新安装最新的JDK
              【解决方案11】:

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

              对于没有管理员权限的用户,当他们打开命令提示符时,它会在用户权限下运行。这意味着,你可能有像 C:\Users\

              这样的路径

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

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

              希望,这对某人有帮助。

              【讨论】:

              • Ermmm ... 用户的环境变量会覆盖 Windows 上的系统环境变量。如果您有一个同名的系统和用户环境变量,那么用户变量“获胜”,这就是应用程序所看到的。
              【解决方案12】:

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

              希望这会奏效!

              【讨论】:

                【解决方案13】:

                由于我当前工作地点的安全限制,我无法在基于 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%
                

                不是最好的解决方案,但它有效。如果有人有任何其他方法或解决方法无法将标准环境变量设置到系统中,我会欢迎他们的回复。

                【讨论】:

                  【解决方案14】:

                  我遇到了同样的问题,以上答案都没有为我解决,因为我的环境变量都已设置。我刚刚重新安装了我的 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,但它可能对某人有所帮助!

                  【讨论】:

                    【解决方案15】:

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

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

                    【讨论】:

                      【解决方案16】:

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

                      问题是我的 JAVA_HOMEc:\sun\jdk\ 而我的 PATH%JAVA_HOME%bin

                      我改成:JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

                      之后就成功了。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2017-12-24
                        • 1970-01-01
                        • 2022-01-04
                        • 2020-06-15
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多