问题:
我收到了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
非常感谢。
答案 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)
以下是解决问题的最佳方法,请在类路径中检查以下内容:
确保JAVA_HOME系统变量必须直到jdk为止,例如C:\Program Files\Java\jdk1.7.0_80
,请不要在此处附加bin。
因为MAVEN会寻找C:\Program Files\Java\jdk1.7.0_80
在类路径中设置%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_HOME
或JRE_HOME
时,他们将值设置为C:\Program Files\Java\jdk1.8.0_221\bin
或类似的值。
请注意,JAVA_HOME
和JRE_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)
在此文件夹中创建文件夹Maven提取下载文件
此文件应为C:\ Program Files \ YourFolderName必须位于C:\ Program Files驱动器中
转到此PC->右键单击->属性->高级系统->环境变量
用户变量---->新建& **注意创建两个变量**如果没有,可能会出错 i)变量名称= MAVEN 变量值= C:\ Program Files \ MAVEN
ii)变量名称= MAVEN_HOME 变量值= C:\ Program Files \ MAVEN \ apache-maven-3.6.3 \ apache-maven-3.6.3
系统变量
路径--->编辑--->新建-给出该文件夹的路径
i)C:\ Program Files \ MAVEN
ii)C:\ Program Files \ MAVEN \ apache-maven-3.6.3 \ bin
Hurrraaaaayyyyy
答案 15 :(得分:0)
我可以通过以下步骤解决此问题:
答案 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 目录中