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

时间:2017-06-21 15:18:27

标签: maven inno-setup

问题:

我收到了Maven错误" JAVA_HOME环境变量未正确定义"当我通过Inno设置批量执行时。但是,我能够在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

常规命令提示符:

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"
来自InnoSetup的

Maven命令:

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

批处理文件中的Maven命令:

mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

设置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

非常感谢。

23 个答案:

答案 0 :(得分:18)

我的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

当我将JAVA_HOME更改为C:\Program Files\Java\jdk1.8.0_144\jre时,问题得到解决 我不确定如何。

答案 1 :(得分:8)

以下是解决问题的最佳方法,请在类路径中检查以下内容:

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

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

  3. 下的jre
  4. 在类路径中设置%JAVA_HOME%\bin

然后尝试Maven版本。

希望它会有所帮助。

答案 2 :(得分:4)

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

答案 3 :(得分:3)

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

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

setx AAA aaa
echo AAA=%AAA%

会打印

AAA=

所以你的批处理文件错了。您必须使用set

set AAA=aaa

请参阅What is the difference between SETX and SET in environment variables in Windows

答案 4 :(得分:2)

在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

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

希望它会对你有所帮助。

答案 5 :(得分:2)

当我的JAVA_HOME系统变量指向C:\ Program Files \ Java \ jdk1.8.0_171 \ bin并且我的PATH条目仅包含%JAVA_HOME%时,我遇到了同样的问题。

我更改了JAVA_HOME变量以排除bin文件夹(C:\ Program Files \ Java \ jdk1.8.0_171),并将bin文件夹添加到系统PATH变量:%JAVA_HOME%\ bin,

答案 6 :(得分:2)

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

请注意,JAVA_HOMEJRE_HOME的值不应包含\bin

答案 7 :(得分:1)

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

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

JAVA_HOME="/usr/libexec/java_home"

第2步:像这样更新JAVA_HOME:

$ vim .bash_profile 

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

$ source .bash_profile

第3步:在新的shell中,检查Maven命令现在是否正常运行:

$ mvn -version

如果这解决了问题,则应返回以下响应:

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"

答案 8 :(得分:1)

我以管理员身份运行以下命令来解决问题:

SETX JAVA_HOME "C:\Program Files\Java\jdk-15.0.2"
SETX -m JAVA_HOME "C:\Program Files\Java\jdk-15.0.2"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;C:\Program Files\Java\jdk-15.0.2\bin;" /f

答案 9 :(得分:1)

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

答案 10 :(得分:1)

SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0

对我来说很好。

注意-请勿在上述路径上加上双引号。否则,当您运行

mvn -version

它将给出以下错误

Files\java\jdk1.8.0_201\jre""==""这时出乎意料。

答案 11 :(得分:0)

似乎Maven不喜欢JAVA_HOME变量具有多个值。就我而言,该错误是由于存在附加路径C:\Program Files\Java\jax-rs(整个路径为C:\Program Files\Java\jdk1.8.0_20;C:\Program Files\Java\jax-rs)引起的。

所以我删除了JAVA_HOME变量,并再次使用单个值C:\Program Files\Java\jdk1.8.0_20重新创建了它。

答案 12 :(得分:0)

您需要拥有 JDK 文件夹的完整路径。如果您在路径中使用 ~ 之类的链接,请将其替换为 /home/<your_user>/,否则会出现此错误。

答案 13 :(得分:0)

按照以下步骤修复它:

我的 jdk 位置:C:\Program Files\Java\jdk1.8.0_60\bin

C:\Users>echo %PROGRAMFILES% C:\程序文件

C:\Program Files>设置 JAVA_HOME=%PROGRAMFILES%\Java\jdk1.8.0_60

C:\Program Files>echo %JAVA_HOME% C:\Program Files\Java\jdk1.8.0_60

C:\Program Files>mvn -version Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven 主目录:E:\java\apache-maven-3.6.3\bin.. Java 版本:1.8.0_60,供应商:Oracle Corporation,运行时:C:\Program Files\Java\jdk1.8.0_60\jre 默认语言环境:en_IN,平台编码:Cp1252 操作系统名称:“windows 10”,版本:“10.0”,arch:“amd64”,系列:“windows”

答案 14 :(得分:0)

  1. 在此文件夹中创建文件夹Maven提取下载文件

  2. 此文件应为C:\ Program Files \ YourFolderName必须位于C:\ Program Files驱动器中

  3. 转到此PC->右键单击->属性->高级系统->环境变量

  4. 用户变量---->新建& **注意创建两个变量**如果没有,可能会出错 i)变量名称= MAVEN 变量值= C:\ Program Files \ MAVEN

    ii)变量名称= MAVEN_HOME 变量值= C:\ Program Files \ MAVEN \ apache-maven-3.6.3 \ apache-maven-3.6.3

  5. 系统变量 路径--->编辑--->新建-给出该文件夹的路径 i)C:\ Program Files \ MAVEN
    ii)C:\ Program Files \ MAVEN \ apache-maven-3.6.3 \ bin

Hurrraaaaayyyyy

答案 15 :(得分:0)

我可以通过以下步骤解决此问题:

  1. 卸载JDK java
  2. 重新安装Java,download JDK 安装程序
  3. 将JAVA_HOME变量添加/更新到JDK安装文件夹

答案 16 :(得分:0)

按照以下步骤为我解决了这个问题。

  • 将zip文件复制到Program Files文件夹中,然后解压缩到“ apache-maven-3.6.3-bin”。

  • 然后复制路径, C:\ Program Files \ apache-maven-3.6.3-bin \ apache-maven-3.6.3

  • 然后使用上述路径在环境变量中创建新的MAVEN_HOME变量。

还添加了

C:\Program Files\apache-maven-3.6.3-bin\apache-maven-3.6.3\bin

“ PATH”变量的地址

答案 17 :(得分:0)

当您设置Java Home变量时,请尝试将路径定位到jdk而不是Java。设置路径如下:C:\ Program Files \ Java \ jdk1.8.0_231

如果您使用C:\ Program Files \ Java这样的路径,它将运行Java,但不会运行maven。

答案 18 :(得分:0)

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

我的JDK位于C:\Program Files\Java\jdk-11.0.2中,而我遇到的问题是Program Files中的空格。如果我使用set JAVA_HOME="C:\Program Files\Java\jdk-11.0.2"设置 JAVA_HOME ,则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.

Program Files引用为PROGRA~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"

答案 19 :(得分:0)

在Windows中,如果jdk的路径中有任何空格,例如(“ C:\ Program Files \ jdk”),则它不起作用,但是如果我们将jdk保留在没有空间的位置,则它的工作原理就像(“ C:\ jdk”)

答案 20 :(得分:0)

如果一切正常,仍然面临“ JAVA_HOME应该指向JDK而不是JRE”问题,请检查用户变量java config和系统变量java config。这解决了我的问题。

答案 21 :(得分:0)

我在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

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

答案 22 :(得分:-3)

另外请确保您的 java、mvn 和所有安装都在 C 目录中