How do I fix maven error The JAVA_HOME environment variable is not defined correctly?
Issue:
I am getting the Maven error "The JAVA_HOME environment variable is not defined correctly" when I run through Inno setup batch execution. However, I am able to run successfully outside Inno Setup.(e.g Command line, Batch file, Vbs). I am clueless to identify the issue.
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
Regular Command Prompt:
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"
Maven Command from InnoSetup:
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
Maven Command from Batch File:
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Setting JAVA_HOME
Check the If Java 1.8 is installed or not. If not installed, Install the same and set the JAVA HOME as follows.
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
Many Thanks.
Solution 1:
My JDK is installed at C:\Program Files\Java\jdk1.8.0_144\
.
I had set JAVA_HOME= C:\Program Files\Java\jdk1.8.0_144\
,
and I was getting this error:
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
When I changed the JAVA_HOME
to C:\Program Files\Java\jdk1.8.0_144\jre
, the issue got fixed.
I am not sure how.
Solution 2:
Following is the best way to get of the issue , check following on classpath:
Make sure JAVA_HOME system variable must have till jdk e.g
C:\Program Files\Java\jdk1.7.0_80
, don't append bin here.Because MAVEN will look for jre which is under
C:\Program Files\Java\jdk1.7.0_80
Set
%JAVA_HOME%\bin
in classpath .
Then try Maven version .
Hope it will help .
Solution 3:
This is how I fixed this issue on Windows 10:
My JDK is located in C:\Program Files\Java\jdk-11.0.2
and the problem I had was the space in Program Files
. If I set JAVA_HOME using set JAVA_HOME="C:\Program Files\Java\jdk-11.0.2"
then Maven had an issue with the double quotes:
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.
Referring to Program Files
as PROGRA~1
didn't help either. The solution is using the PROGRAMFILES variable inside of JAVA_HOME:
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"
Solution 4:
A very common mistake people make is that, when they set JAVA_HOME
or JRE_HOME
, they set the value to C:\Program Files\Java\jdk1.8.0_221\bin
or similar.
Please note JAVA_HOME
and JRE_HOME
value should not contain \bin