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

5t7ly7z5  于 2022-09-20  发布在  Maven
关注(0)|答案(11)|浏览(329)

问题:

当我运行Inno Setup批处理执行时,我收到Maven错误“The 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 Filesapache-maven-3.5.0bin..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:Program FilesJavajdk1.8.0_131jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

InnoSetup的Maven命令:

[Files]
Source: "C:@SetupMavenInstaller.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主目录。

SETX JAVA_HOME "C:Program FilesJavajdk1.8.0_131"
SETX -m JAVA_HOME "C:Program FilesJavajdk1.8.0_131"
REG ADD "HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment" /v Path /t REG_SZ /d "%path%;C:Program FilesJavajdk1.8.0_131bin;" /f

非常感谢。

t1qtbnec

t1qtbnec1#

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

1.确保JAVA_HOME系统变量必须有Until JDK,例如C:\Program Files\Java\jdk1.7.0_80,不要在这里附加bin。
1.因为MAVEN将查找C:\Program Files\Java\jdk1.7.0_80下的jre
1.在类路径中设置%JAVA_HOME%\bin

然后试试Maven版本。

希望这能有所帮助。

e5nqia27

e5nqia272#

我的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时,问题得到解决。
我不知道是怎么回事。

o2g1uqev

o2g1uqev3#

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

C:Users>echo %JAVA_HOME%
"C:Program FilesJavajdk-11.0.2"

C:Users>mvn -version
FilesJavajdk-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%Javajdk-11.0.2

C:Program Files>echo %JAVA_HOME%
C:Program FilesJavajdk-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.2bin..
Java version: 11.0.2, vendor: Oracle Corporation, runtime: C:Program FilesJavajdk-11.0.2
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
hvvq6cgz

hvvq6cgz4#

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

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

njthzxwz

njthzxwz5#

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

wlwcrazw

wlwcrazw6#

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

mftmpeh8

mftmpeh87#

我删除了JAVA_HOME变量,只保留了PATH和CLASSPATH变量,将它们分别指向JDK和JRE。这对我很管用。

l3zydbqr

l3zydbqr8#

我在Windows操作系统中使用MVN CLEAN PACKET命令时也遇到了同样的问题

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

希望它能对你有所帮助。

tyky79it

tyky79it9#

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

首先:

JAVA_HOME="C:Program FilesJavajdk1.8.0"

或者:

export JAVA_HOME="C:Program FilesJavajdk1.8.0"

然后尝试:

mvn -version

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

xkftehaa

xkftehaa10#

当我的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文件夹添加到系统路径变量:%JAVA_HOME%\bin。

gc0ot86w

gc0ot86w11#

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

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

相关问题