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

如何修复maven错误JAVA_HOME环境变量定义不正确?,maven,inno-setup,Maven,Inno Setup,问题: 当我运行Inno setup批处理执行时,出现Maven错误“JAVA_HOME环境变量定义不正确”。但是,我能够在Inno安装程序之外成功运行(例如命令行、批处理文件、Vbs)。我无法确定这个问题 Inno安装程序调用提示: C:\>mvn -version The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this prog

问题:

当我运行Inno setup批处理执行时,出现Maven错误“JAVA_HOME环境变量定义不正确”。但是,我能够在Inno安装程序之外成功运行(例如命令行、批处理文件、Vbs)。我无法确定这个问题

Inno安装程序调用提示:

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"
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
常规命令提示:

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"
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
来自InnoSetup的Maven命令:

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"
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
批处理文件中的Maven命令:

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"
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
设置JAVA_主页

检查是否安装了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

非常感谢。

SETX命令不会修改当前环境

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

setx AAA aaa
echo AAA=%AAA%
它会打印出来

AAA=
所以你的批处理文件是错误的。您必须使用
设置

set AAA=aaa


请参阅。

我的JDK安装在
C:\Program Files\Java\jdk1.8.0\u 144\

我已经设置了
JAVA\u HOME=C:\Program Files\JAVA\jdk1.8.0\u 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\u HOME
更改为
C:\Program Files\JAVA\jdk1.8.0\u 144\jre
时,问题得到了解决。

我不知道怎么做。

我删除了JAVA_HOME变量,并通过分别指向jdk和jre只保留了path和classpath变量。这对我很有效。

在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环境变量,解决了这个问题


希望它能对您有所帮助。

当我的JAVA\u HOME系统变量指向C:\Program Files\JAVA\jdk1.8.0\u 171\bin时,我遇到了同样的问题,我的路径条目只有%JAVA\u HOME%


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

我也遇到了同样的问题,以下方法对我有效

步骤1:检查JAVA_主页设置。它可能看起来像:

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"

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

  • 确保JAVA_HOME系统变量必须在jdk之前具有,例如
    C:\Program Files\JAVA\jdk1.7.0_80
    ,不要在此处附加bin

  • 因为MAVEN将在
    C:\ProgramFiles\Java\jdk1.7.0\U 80下查找jre

  • 在类路径中设置
    %JAVA\u HOME%\bin

  • 然后试试Maven版本


    希望能有所帮助。

    我在Windows7上也遇到过同样的问题

    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_主目录对我来说很有效

    第一:

    JAVA_HOME="C:\Program Files\Java\jdk1.8.0"
    
    或:

    然后尝试:

    mvn -version
    

    以确保不会出现相同的错误。:)

    在windows中,如果jdk路径中有任何类似(“C:\Program Files\jdk”)的空间,那么它就不工作,但是如果我们将jdk放在一个没有空间的位置,那么它就可以像(“C:\jdk”)一样正常工作。

    人们经常犯的一个错误是,当他们设置
    JAVA\u HOME
    JRE\u HOME
    时,他们将值设置为
    C:\ProgramFiles\Java\jdk1.8.0\u 221\bin
    或类似值


    请注意
    JAVA\u HOME
    JRE\u HOME
    值不应包含
    \bin

    似乎Maven不喜欢
    JAVA\u HOME
    变量有多个值。在我的例子中,错误是由于存在附加路径
    C:\Program Files\Java\jax-rs
    (整个路径是
    C:\Program Files\Java\jdk1.8.0;C:\Program Files\Java\jax-rs


    因此,我删除了
    JAVA\u HOME
    变量,并用单个值
    C:\Program Files\JAVA\jdk1.8.0\u 20
    重新创建了它,这就是我在Windows 10上解决此问题的方法:

    我的JDK位于
    C:\Program Files\Java\JDK-11.0.2
    中,我遇到的问题是
    程序文件中的空间。如果我使用
    set JAVA\u HOME=“C:\Program Files\JAVA\jdk-11.0.2”
    设置JAVA\u 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.
    
    程序文件
    称为
    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"
    

    当您设置java home变量时,请尝试将path till作为JDK而不是java的目标。设置路径如下:C:\Program Files\Java\jdk1.8.0\U 231


    如果将路径设置为C:\Program Files\Java,它将运行Java,但不会运行maven。

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

    • 将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”变量的地址

    对我来说很好

    注意-不要在上面提到的路径上加双引号。否则当你跑的时候

    mvn -version
    
    它将给出以下错误

    Files\java\jdk1.8.0\u 201\jre”“==”“
    此时意外


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

    我通过以下步骤解决了这个问题:

  • 卸载jdkjava