【问题标题】:How do I fix maven error The JAVA_HOME environment variable is not defined correctly?如何修复 maven 错误 JAVA_HOME 环境变量未正确定义?
【发布时间】:2017-11-24 14:17:25
【问题描述】:

问题:

当我运行 Inno 设置批处理执行时,我收到 Maven 错误“未正确定义 JAVA_HOME 环境变量”。但是,我能够在 Inno Setup 之外成功运行。(例如命令行、批处理文件、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"

来自 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

非常感谢。

【问题讨论】:

    标签: maven inno-setup


    【解决方案1】:

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

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

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

    3. 在类路径中设置%JAVA_HOME%\bin

    然后尝试 Maven 版本。

    希望它会有所帮助。

    【讨论】:

    • 这也解决了我的问题感谢@mukesh sharma
    • 关于 #3 我认为你的意思是 windows PATH 变量,而不是类路径
    • 我已经在没有 bin 的情况下配置了 JAVA home,但仍然出现同样的错误
    【解决方案2】:

    我的 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 时,问题得到了解决。
    我不确定如何。

    【讨论】:

    • 您好,欢迎来到 Stack Overflow!我编辑了您的答案以使代码部分更明显,并且 Stack Overflow 用户更容易阅读 - 请参阅编辑帮助以获取有关格式的更多信息。感谢分享!
    • 这是工作,谢谢。但是如何使用目录jre 而不是bin 来工作?
    • 您可能需要重新启动 bash/cmd 以使其反映更改。
    【解决方案3】:

    这就是我在 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"
    

    【讨论】:

    • 谢谢,这对我有帮助。
    • 这非常适合我,谢谢! +1
    【解决方案4】:

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

    请注意JAVA_HOMEJRE_HOME 值不应包含\bin

    【讨论】:

    • 这是我的错误。删除 \bin 就可以了。谢谢!
    【解决方案5】:

    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

    【讨论】:

    • 你成功了,我可以回显 JAVA_HOME。仍然 Maven 命令不起作用。让我来处理它。
    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

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

        第一:

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

        或者:

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

        那就试试吧:

        mvn -version
        

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

        【讨论】:

          【解决方案9】:

          我在 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_HOME 并关闭并重新打开控制台就足够了。但是在我家里的笔记本电脑上,我在更改 JAVA_HOME 后没有重新启动笔记本电脑。
          【解决方案10】:

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

          【讨论】:

            【解决方案11】:

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

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

            【讨论】:

              【解决方案12】:

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

              第 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"
              

              【讨论】:

                【解决方案13】:
                SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0
                

                对我来说效果很好。

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

                mvn -version
                

                会报如下错误

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

                【讨论】:

                  【解决方案14】:

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

                  如果你创建像 C:\Program Files\Java 这样的路径,它会运行 java 但不会运行 maven。

                  【讨论】:

                    【解决方案15】:

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

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

                    【讨论】:

                      【解决方案16】:
                      1. 在此文件夹中创建文件夹 Maven 提取下载文件

                      2. 这个文件应该 C:\Program Files\YourFolderName 必须在 C:\Program Files 驱动器中

                      3. 转到这台电脑->右键->属性->高级系统->环境变量

                      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. 系统变量 path ---> Edit---> new----给出这个文件夹的路径 i) C:\Program Files\MAVEN
                        ii) C:\Program Files\MAVEN\apache-maven-3.6.3\bin

                      呼啦aaaayyyyy

                      【讨论】:

                        【解决方案17】:

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

                        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
                        

                        【讨论】:

                          【解决方案18】:

                          在 windows 的情况下,如果 jdk 的路径中有任何空间,例如 ("C:\Program Files\jdk"),那么它就不起作用,但是如果我们将 jdk 保存在没有空间的位置,那么它像 ("C:\jdk")

                          【讨论】:

                            【解决方案19】:

                            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 重新创建它。

                            【讨论】:

                              【解决方案20】:

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

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

                              【讨论】:

                                【解决方案21】:

                                按照以下步骤进行修复:

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

                                C:\Users>回显 %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”

                                【讨论】:

                                  【解决方案22】:

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

                                  【讨论】:

                                    【解决方案23】:

                                    轻松Win10解决方案 JDK安装后,下载maven并粘贴到C:/,然后复制其路径并粘贴到“环境变量”。 转到键盘上的“windows 键”类型“环境变量”。点击右下角的“环境变量”按钮。

                                    从“系统变量”中选择 JAVA_HOME 并点击“编辑” 可能您有通往 Java JRE 而不是 JDK 的路径。检查安装 JDK 的位置(在我的情况下为 C:\Program Files\Java\jdk-17 )并粘贴该路径。

                                    记住!! JDK 路径应该bin 文件夹的路径,因为你会得到 double bin 像 C:\Program Files\Java\jdk -17\bin\bin\java 因为 Maven 检查(见其他条件):

                                    if [ -z "$JAVA_HOME" ] ; then
                                        JAVACMD=`which java`
                                    else
                                        JAVACMD="$JAVA_HOME/bin/java"
                                    fi
                                     
                                    if [ ! -x "$JAVACMD" ] ; then
                                        echo "The JAVA_HOME environment variable is not defined correctly" >&2
                                        echo "This environment variable is needed to run this program" >&2
                                        echo "NB: JAVA_HOME should point to a JDK not a JRE" >&2
                                        exit 1
                                    fi
                                    

                                    【讨论】:

                                      【解决方案24】:

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

                                      %JAVA_HOME%\bin
                                      

                                      并像这样添加您的 Maven 文件夹路径

                                      C:\Program Files (x86)\apache-maven-3.8.4\bin
                                      

                                      然后创建名为的用户变量

                                      JAVA_HOME 
                                      

                                      并设置为路径

                                      C:\Program Files\Java\jdk-17\ 
                                      

                                      (没有垃圾箱!)

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

                                      【讨论】:

                                        【解决方案25】:

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

                                        【讨论】:

                                        • 你为什么需要那个?
                                        • 信息不正确。 Maven 或 Java 在 Windows 上与驱动器无关,它们不依赖于特定驱动器上的安装文件夹。
                                        猜你喜欢
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2020-05-21
                                        • 2018-09-30
                                        • 1970-01-01
                                        • 2016-09-11
                                        • 1970-01-01
                                        • 2015-02-03
                                        相关资源
                                        最近更新 更多