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

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

问题在于你的path。

  1. 确保目录“E:\ java resources \ apache-maven-2.2.0 \ bin”在您的命令searchpath中。
  2. 确保JAVA_HOMEvariables指向Java安装的主目录 。 如果从“E:\ Sun \ SDK \ jdk \ bin”执行Java,则JAVA_HOMEvariables需要指向“E:\ Sun \ SDK \ jdk”。

    NB:JAVA_HOME不应以“\ bin”结尾1

  3. 确保你没有把分号放在JAVA_HOMEvariables中2

    注意:JAVA_HOME应该是一个单独的目录名称,而不是用分号分隔的“PATH-like”列表。

另外请注意,如果您忽略了关于Windows关于关键path中空格的Maven指令中的这个build议,可能会遇到问题。

“像许多跨平台工具一样,Maven 在重要path名称中存在空格字符时可能会遇到问题。”

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

“你需要解压缩Maven发行版,不要在源代码中间解压缩它,select一些位置( path中没有空格 ),然后将其解压缩到那里。

对此的简单补救措施是重新安装Java或Maven在不同的位置,以便path中没有空间


1 – ….除非你为你的安装位置的名称做出了疯狂的select。

2 – 显然Windowspath问题的一个常见的“巫术”解决scheme是在最后敲一个分号。 一般不推荐,绝对不行。

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

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

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

问题是我的JAVA_HOMEc:\sun\jdk\ ,我的path%JAVA_HOME%bin

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

它在那之后工作。

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

以前是这样的:C:\ Program Files \ Java \ jdk1.6.0_45 \ bin刚刚删除\ bin,它为我工作。

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

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

 @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% 

不是最好的解决scheme,但它的工作原理。 如果有人有任何其他的方式或解决方法,标准环境variables不能设置到系统中,我会欢迎他们的回应。

我有同样的问题,上述答案都没有解决,因为我的环境variables都设置。 我刚刚重新安装了我的Java。

什么工作是

  1. 转到C:\path\to\apache-maven-3.0.4\bin并打开mvn.bat文件。
  2. find如下所示的行@SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. 将其纠正到正确的path

我不知道这是否是Windows特定的,但它可能有助于某人!

经过很多尝试失败,我find了解决办法

这是“;” 在我设置的每个新variables的末尾总是放入JAVA_HOME的末尾。 所以摆脱了;

JAVA_HOME也在User Variable中设置它(没有“;”ofcourse)

您应该设置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 nowpath= …..;%MAVEN_HOME%\ bin;%JAVA_HOME%\ bin它工作正常

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

希望这会工作!

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

对于没有pipe理员权限的用户以及打开命令提示符时,它将以用户权限运行。 这意味着,你可能有像C:\ Users \

所以在尝试C:\ Users \ XYZ> mvn –version时,实际上是从环境variables中的用户variables而不是系统variablessearchJAVA_HOMEpath。

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

希望,这有助于某人。

运行eclipse并运行Maven将需要存储两个pathvariables,一个在你的jdk1.7_x_x_x位置,另一个在你的jdk1.7_x_x_ \ bin中。 如果您正在使用Windows,那么当您处于环境variables中时,请执行以下操作:

1)创build一个名为JAVA_HOME的USERvariables。 将其指向您的JAVA文件的位置。 例如:“C:\ Program Files \ Java \ jdk1.7.0_51”(删除引号)

2)在PATH下,将%JAVA_HOME%追加到PATH中。 这会将步骤1中的文件位置添加到PATH中。 这对MAVEN来说很好

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

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

注意:以%的forms包含的项目(如%M2%)是分配的variables。 它看起来多余,但必要。 您可以通过input以确认一切正常:

java -version
javac -version
mvn -version

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

有时在Windows中,path中的空白不能被正确识别

如果你有path问题和path似乎

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中testing

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

希望这有助于某人。

我的情况有点不同

  • JAVA_HOME被正确设置为指向1.7
  • 其他Maven项目正在工作/build设良好的1.7function。
  • 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 ,事情工作。

希望对某人有用。

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

我有这个我的JAVA_HOME环境variables值:

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

何时需要:

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

分号再次袭击!

🙂

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

使用Windows 10

我正面临问题..然后我完全删除JAVA_HOMEvariables,只是在PATH中添加%JAVA_HOME%\ bin然后它工作! 为了我