如何修复maven错误JAVA_HOME环境变量未正确定义?

i_a*_*rky 22 inno-setup maven

问题:

当我运行Inno安装批处理执行时,我收到Maven错误"JAVA_HOME环境变量未正确定义".但是,我能够在Inno Setup之外成功运行.(例如命令行,批处理文件,Vbs).我无法确定问题.

Inno Setup Invoked Prompt:

C:\>mvn -version
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)

常规命令提示符:

C:\>mvn -version
C:\
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T01:09:06+05:30)
Maven home: C:\Program Files\apache-maven-3.5.0\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud)

来自InnoSetup的Maven Command:

[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
Run Code Online (Sandbox Code Playgroud)

批处理文件中的Maven命令:

mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Run Code Online (Sandbox Code Playgroud)

设置JAVA_HOME

检查是否安装了Java 1.8.如果未安装,请按照以下步骤安装并安装JAVA HOME.

SETX JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131"
SETX -m JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;C:\Program Files\Java\jdk1.8.0_131\bin;" /f
Run Code Online (Sandbox Code Playgroud)

非常感谢.

noc*_*dib 27

这是我在Windows 10上解决此问题的方法:

我的JDK位于C:\Program Files\Java\jdk-11.0.2和我有问题是在太空Program Files。如果我使用JAVA_HOME 设置,set JAVA_HOME="C:\Program Files\Java\jdk-11.0.2"则 Maven 有双引号问题:

C:\Users>set JAVA_HOME="C:\Program Files\Java\jdk-11.0.2"

C:\Users>echo %JAVA_HOME%
"C:\Program Files\Java\jdk-11.0.2"

C:\Users>mvn -version
Files\Java\jdk-11.0.2""=="" was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

提到Program FilesasPROGRA~1也没有帮助。解决方案是在 JAVA_HOME 中使用PROGRAMFILES变量:

C:\Users>echo %PROGRAMFILES%
C:\Program Files

C:\Program Files>set JAVA_HOME=%PROGRAMFILES%\Java\jdk-11.0.2

C:\Program Files>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11.0.2

C:\Program Files>mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T17:06:16+02:00)
Maven home: C:\apache-maven-3.6.2\bin\..
Java version: 11.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-11.0.2
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这对我有帮助。 (2认同)
  • 谢谢你,我已经两次看到你的答案了!希望我能投两次票! (2认同)

小智 26

我的JDK安装在C:\Program Files\Java\jdk1.8.0_144\.
我设置了JAVA_HOME= C:\Program Files\Java\jdk1.8.0_144\,我收到了这个错误:

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)

当我改变JAVA_HOME为C:\Program Files\Java\jdk1.8.0_144\jre,问题得到解决.
我不知道怎么做.

  • 您好,欢迎来到 Stack Overflow!我编辑了您的答案,以使代码部分更加明显,并且更易于 Stack Overflow 用户阅读 - 请参阅编辑帮助以获取有关格式设置的更多信息。感谢分享! (2认同)

小智 12

以下是解决此问题的最佳方法,请在classpath上检查以下内容:

  1. 确保JAVA_HOME系统变量必须直到jdk为止C:\Program Files\Java\jdk1.7.0_80,不要在此处附加bin。

  2. 因为MAVEN会寻找下的jre C:\Program Files\Java\jdk1.7.0_80

  3. %JAVA_HOME%\bin在classpath中设置。

然后尝试Maven版本。

希望它会有所帮助。

  • 关于#3我认为你的意思是Windows PATH变量,而不是类路径 (3认同)
  • 你能把答案也更新到linux吗 (2认同)

小智 10

人们常犯的一个错误是,当他们设置JAVA_HOME或 时JRE_HOME,他们将值设置为C:\Program Files\Java\jdk1.8.0_221\bin或 类似。

请注意JAVA_HOME,JRE_HOME值不应包含\bin


Mar*_*ryl 8

该SETX命令不会修改当前环境。

如果您运行以下批处理文件:

setx AAA aaa
echo AAA=%AAA%
Run Code Online (Sandbox Code Playgroud)

它会打印

AAA=
Run Code Online (Sandbox Code Playgroud)

所以你的批处理文件是错误的。你必须使用set:

set AAA=aaa
Run Code Online (Sandbox Code Playgroud)

请参阅Windows 中环境变量中 SETX 和 SET 的区别是什么。


Pra*_*hoo 6

我在 Windows 操作系统中使用mvn clean package命令时遇到了同样的问题

C:\eclipse_workspace\my-sparkapp>mvn clean package
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)

我通过从用户变量/系统变量中删除JAVA_HOME环境变量解决了这个问题,然后重新启动笔记本电脑,然后再次设置JAVA_HOME环境变量。

希望它能帮助你。


小智 6

我在同样的问题上苦苦挣扎,以下内容对我有用。

第 1 步:检查您的 JAVA_HOME 设置。它可能看起来像:

JAVA_HOME="/usr/libexec/java_home"
Run Code Online (Sandbox Code Playgroud)

第 2 步:更新 JAVA_HOME,如下所示:

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home)

$ source .bash_profile
Run Code Online (Sandbox Code Playgroud)

步骤 3:在新 shell 中,检查 Maven 命令现在是否正常工作:

$ mvn -version
Run Code Online (Sandbox Code Playgroud)

如果这解决了问题,您应该得到如下响应:

Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
Maven home: /usr/share/maven
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.2", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)


小智 5

我删除了 JAVA_HOME 变量,并通过分别将路径和类路径变量指向 jdk 和 jre 来保留它们。这对我有用。


Yur*_*val 5

我在 Windows 7 上也遇到了同样的问题。

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
Run Code Online (Sandbox Code Playgroud)

解决方案非常简单 - 右键单击​​命令提示符快捷方式并选择“以管理员身份运行”。之后问题就消失了)


dic*_*cle 5

从命令行设置 JAVA_HOME 目录对我有用!

第一的:

JAVA_HOME="C:\Program Files\Java\jdk1.8.0"
Run Code Online (Sandbox Code Playgroud)

或者 :

export JAVA_HOME="C:\Program Files\Java\jdk1.8.0"
Run Code Online (Sandbox Code Playgroud)

然后尝试:

mvn -version
Run Code Online (Sandbox Code Playgroud)

以确保您不会遇到相同的错误。:)


jai*_*aji 5

从环境变量中删除 JAVA_HOME 和 JAVA_JRE 解决了这个问题。


Mat*_*oma 5

在你的环境变量路径中添加这个

%JAVA_HOME%\bin
Run Code Online (Sandbox Code Playgroud)

并添加 Maven 文件夹的路径,如下所示

C:\Program Files (x86)\apache-maven-3.8.4\bin
Run Code Online (Sandbox Code Playgroud)

然后创建名为的用户变量

JAVA_HOME 
Run Code Online (Sandbox Code Playgroud)

并设置为路径

C:\Program Files\Java\jdk-17\ 
Run Code Online (Sandbox Code Playgroud)

(没有垃圾箱!)

最后一步:重要 重新启动 IntelliJ 或您正在使用的其他程序。