Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: JAVA_HOME is not defined correctly executing maven

I installed java and set the path environment and when I run echo $JAVA_HOME in the terminal I get the following output:

/usr/lib/jvm/java-7-oracle/jre/bin/java 

I Also installed apache-maven and changed environment file and now it looks like this:

JAVA_HOME="/usr/lib/jvm/java-7-oracle/jre/bin/java" M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5 M2=$M2_HOME/bin MAVEN_OPTS="-Xms256m -Xmx512m" PATH=$M2:$PATH 

But when I execute mvn --version I get a warning:

Error: JAVA_HOME is not defined correctly.   We cannot execute /usr/lib/jvm/java-7-oracle/jre/bin/java/bin/java 

Can not find out why it repeats in the end /bin/java/bin/java

like image 925
user3127896 Avatar asked Dec 05 '14 15:12

user3127896


People also ask

How do you fix JAVA_HOME environment variable is not defined correctly?

All you need to do to fix this error is edit the JAVA_HOME variable and point it to the correct directory. The JAVA_HOME environment variable must point to the root of the installation folder of a JDK. It cannot point to a sub-directory of the JDK, and it cannot point to a parent directory that contains the JDK.

Does Maven need JAVA_HOME?

How does Maven verify the JAVA_HOME path? Before running any goals, Maven checks for the existence of the java command in the path specified by JAVA_HOME or by asking the OS for a default JDK installation. If the executable is not found, Maven terminates with the error.


2 Answers

Assuming you use bash shell and installed Java with the Oracle installer, you could add the following to your .bash_profile

export JAVA_HOME=$(/usr/libexec/java_home) export PATH=$JAVA_HOME/jre/bin:$PATH 

This would pick the correct JAVA_HOME as defined by the Oracle installer and will set it first in your $PATH making sure it is found.

Also, you don't need to change it later when updating Java.

EDIT

As per the comments:

Making it persistent after a reboot

Just add those lines in the shell configuration file. (Assuming it's bash)

Ex: .bashrc, .bash_profile or .profile (for ubuntu)

Using a custom Java installation

Set JAVA_HOME to the root folder of the custom Java installation path without the $().

Ex: JAVA_HOME=/opt/java/openjdk

like image 155
rbento Avatar answered Oct 10 '22 17:10

rbento


JAVA_HOME should be /usr/lib/jvm/java-7-oracle/jre/.

like image 29
talex Avatar answered Oct 10 '22 16:10

talex