"mvn"未被识别为内部或外部命令,可执行程序或批处理文件。

24

也许这个问题之前已经被问过,但是我发现了一种非常奇怪的错误。 当我从bin目录运行mvn --version命令时,它会给出版本和其他信息。然而,当我在bin目录之外运行它时,它会抛出异常。下面提到了两种结果。

C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5\bin>mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 19:21:
28+0530)
Maven home: C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5>mvn --version
'mvn' is not recognized as an internal or external command,
operable program or batch file.

我在用户变量中设置了JAVA_HOME,系统环境变量中设置了M2_HOME、M2。这些变量以及%path%的输出结果如下:

C:\Users\SAHILBHALLA>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.7.0_25

C:\Users\SAHILBHALLA>echo %M2%
C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5\bin

C:\Users\SAHILBHALLA>echo %M2_HOME%
C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5

C:\Users\SAHILBHALLA>echo %path% 
C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPow erShell\v1.0\;C:\Program Files\Java\jdk1.7.0_25\bin;.; 

告诉我我做错了什么,我应该怎么做才能从中恢复过来?


2
你把那些环境变量放到 PATH 里了吗? - Rohit Jain
1
mvn.exe的位置是否在你的%PATH%中?例如,你第二次调用mvn实际上是在比第一次更高的目录中进行的,所以我猜测它不在路径中。尝试使用bin\mvn作为命令。 - Marc B
如果我使用 bin\mvn ,那么我将无法从任何其他位置(例如我的工作区)访问它。 - rahul
请在此处查看答案:https://dev59.com/mGw05IYBdhLWcg3weBvu#36601957 - Phuong
你可以参考这个相关的问答。 请注意(至少对于最近的Windows),用户环境变量和系统环境变量(如path)之间存在差异。此处有截图 - Cadoiz
18个回答

30
这个问题是因为您的操作系统中没有与已安装的Maven对应的任何环境变量所引起的。 为了解决这个问题,我总是使用Intellij捆绑的Maven,不再安装单独的Maven版本。要查找捆绑的Maven路径,请转到Intellij并按Ctrl+Alt+S -> Build, Execution, Deployment -> Build tool -> Maven -> Maven home directory,可以在下面的图像中找到Intellij捆绑的Maven路径。

enter image description here

然后进入系统环境变量并设置这些变量:
Variable name: MAVEN_HOME
Variable value: C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plugins/maven/lib/maven3 enter image description here 在定义了系统变量MAVEN_HOME之后,找到变量path并将此行添加到列表中:%MAVEN_HOME%\bin enter image description here 工作完成了,打开命令提示符并通过编写mvn -v来测试它。99%的时间它会起作用,如果您属于1%,则必须重新启动计算机。
如果你想从Intellij的内部终端使用mvn命令,你需要在设置环境变量后重启Intellij,然后你就不应该有任何问题从终端运行maven命令。

这对我来说解决了问题。非常感谢! - Andrei Călugăr

25

问题已解决,path 未解析 %M2%。当我将maven-bin的位置添加到路径中,而不是 %M2% ,然后该命令起作用了。

我要感谢所有尝试解决问题的人。


我也遇到了同样的问题,当我使用 echo %PATH% 命令时,总是看到旧的路径,不知道为什么。最后只好重启电脑。 - Reem
当我添加了路径后,这个错误就消失了。但是当我重新启动系统时,它又显示出来了。路径已经存在于环境变量中。但是我想要删除并重新设置路径以使其正常工作。为什么? - Mohammed Javad

14
如果你想从任何地方执行maven命令,就应该将maven加入系统的PATH中。只需在PATH中添加%M2_HOME%\bin即可。

正如我之前提到的,M2_HoME和M2设置在系统环境变量中。 - rahul
没错,这就是为什么@radai让你将%M2_HOME%/bin添加到%PATH%中的原因。相信我,这会起作用的。 - thekbb
@thekbb - 每当您键入可执行文件或shell(bat)文件的名称时,操作系统会在当前目录中查找它。如果在那里找不到它,它将浏览%PATH%中提到的所有目录。如果您想让mvn可访问,则%M2_HOME%\bin必须在路径上。%M2_HOME%存在是不够的(尽管也需要)。 - radai
@rahul 但是 %M2% 不是 mvn 的所在位置,应该将 %M2%\bin 添加到路径中。 - radai
M2已经包含bin,因为echo输出为C:\Program Files\apache-maven-3.0.5-bin\apache-maven-3.0.5\bin - rahul

10

首先要确保您的Java是否正常工作,可以在命令提示符中运行此命令。

 C:\>java -version

如果它正常工作,它将显示以下输出:

C:\>java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) Client VM (build 25.74-b02, mixed mode)

第一步:首先在用户变量中设置java_home[C:\Program Files\Java\jdk1.8.0_74]路径。

第二步:然后在系统变量中设置MAVEN_HOME[C:\Program Files\maven\apache-maven-3.3.9]路径,并确保你的maven文件夹只存在于C盘中。

第三步:接着在系统变量中设置M2路径,并将maven bin位置放在那里,即[C:\Program Files\maven\apache-maven-3.3.9\bin]。

第四步:然后设置新的系统变量,即“变量名称”= MAVEN_OPTS,“变量值”=-Xms256m -Xmx512m。

第五步:然后编辑路径/系统路径变量,注意不要删除任何内容,只需简单地添加java_home路径,即=;C:\Program Files\Java\jdk1.8.0_74和M2变量=;%M2%在结尾处。

第六步:为了确保maven是否正常工作,请在命令提示符中运行此命令。

> C:\>mvn --version

如果它正常工作,它将显示以下结果:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-
7+05:30)
Maven home: C:\Program Files\maven\apache-maven-3.3.9\bin\..
Java version: 1.8.0_74, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_74\jre
Default locale: en_IN, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "dos"

8
在Windows 10中,我必须以管理员身份运行Windows命令提示符(cmd)。这样做解决了我的问题。

5
在Windows 7上,我在系统级别添加环境变量后解决了这个问题。 如果您没有足够的权限,请尝试将%JAVA_HOME%%M2_HOME%设置为系统变量,而不是用户变量。

4
为了解决这个问题,请按照以下步骤进行操作:
  1. http://maven.apache.org/download.cgi下载Maven的zip文件。
  2. 解压缩Maven的zip文件。
  3. 打开环境变量,在用户变量部分点击“新建”按钮,并创建一个名为“MAVEN_HOME”的变量,将其赋值为已解压缩的Maven bin路径。
  4. 现在在系统变量中点击“Path”,并点击“编辑”按钮--> 然后点击“新建”按钮,粘贴Maven zip的“bin”路径。
  5. 现在点击“确定”按钮。
  6. 打开“CMD”窗口并输入“mvn -version”。
  7. 安装的Maven版本将被显示,您的设置已完成。

4
请将完整路径 mvn 放入您的 PATH 环境变量中。

4

在设置Maven bin位置的路径后,关闭提示窗口并重新启动。使用echo %path%命令确保路径已设置为Maven变量,然后运行mvn -version命令。如果提示窗口正在运行时设置了路径,则不会选择新变量。


1
感谢您为StackOverflow做出贡献。为了使您的答案更易于阅读,您可以将要格式化的命令放在反引号之间,例如这个`。我已经更新了您的答案,以反映这一点。 - SDJMcHattie

3
以下是我在Win10上的帮助:
  • 在用户变量下,将%M3_HOME%\bin;添加为Path变量的值。
  • 在系统变量下,将maven二进制文件夹的完整路径作为M3_HOME变量的值。
  • 在系统变量下,将%M3_HOME%\bin;添加为Path变量的值。
  • 无论何时都点击OK。
  • 关闭现有的命令提示符。
  • 打开新的命令提示符并导航到Maven二进制文件夹。
  • 输入mvn -version

这样就可以了。


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