with pom plugin entorno compiler compatible change java maven java-home

pom - Error: JAVA_HOME no está definido correctamente al ejecutar maven



set java 1.8 maven (13)

Instalé java y configuré la ruta al entorno y cuando ejecuto echo $JAVA_HOME obtengo el siguiente resultado:

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

También instalé apache-maven y cambié environment archivo de environment y ahora se ve así:

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

Pero cuando ejecuto mvn --version me sale una advertencia:

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

No puedo descubrir por qué se repite al final /bin/java/bin/java


Abrimos una terminal y buscamos la ubicación de java:

manuel@zonademanel:~ → whereis java

java: / usr / bin / java / etc / java / usr / bin / X11 / java / usr / share / java /usr/share/man/man1/java.1.gz

Lo que estamos buscando es / usr / bin / java continuar en la línea de comando para encontrar la ruta absoluta, ya que este es solo un enlace simbólico.

manuel@zonademanel:~ → ls -lah /usr/bin/java

lrwxrwxrwx 1 root root 22 may 19 2015 / usr / bin / java -> / etc / Alternatives / java

manuel@zonademanel:~ → ls -lah /etc/alternatives/java

lrwxrwxrwx 1 root root 39 dic 7 11:52 / etc / alternativas / java -> / usr / lib / jvm / java-8-oracle / jre / bin / java

Modifiqué mi archivo / etc / environment con los siguientes valores

RUTA = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / usr / lib / jvm / java-8-oracle / jre / bin "JAVA_HOME =" / usr / lib / jvm / java-8-oracle / jre "

Si no quiero volver a iniciar sesión, puedo volver a cargar los cambios con:

source /etc/environment

Y ejecute mvn -version correctamente

manuel@zonademanel:~ → mvn -version

Apache Maven 3.0.5
Maven home: / usr / share / maven
Versión de Java: 1.8.0_77, proveedor: Oracle Corporation
Página de inicio de Java: / usr / lib / jvm / java-8-oracle / jre
Configuración regional predeterminada: es_MX, codificación de plataforma: UTF-8
Nombre del sistema operativo: "linux", versión: "3.16.0-70-generic", arch: "amd64", familia: "unix"


Debe tomar todo el directorio donde está instalado Java, en mi caso:

export JAVA_HOME=/usr/java/jdk1.8.0_31


En mi caso, el problema estaba en vscode.

Uso Windows e instalé Ubuntu en mi computadora, por lo que vscode terminal usa Ubuntu. Solo voy a settings.json y cambio a cmd.exe nuevamente


En primer lugar, en un modo de desarrollo, debe usar JDK en lugar de JRE. En segundo lugar, JAVA_HOME es donde instala Java y donde todos los demás marcos buscarán lo que necesitan (JRE, javac, ...)

Entonces, si configuras

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

cuando ejecuta un comando "mvn", Maven intentará acceder a Java agregando / bin / java, pensando que JAVA_HOME está en el directorio raíz de la instalación de Java.

Pero ambientación

JAVA_HOME = / usr / lib / jvm / java-7-oracle /

Maven accederá a add bin / java, entonces funcionará bien.


Es posible que reciba este error debido a un par de razones. Para solucionar esto rápidamente, siga los pasos a continuación,

Primero encuentre la ubicación de Java. Para obtener una lista de sus plataformas Java instaladas, ejecute el siguiente comando desde la terminal:

$ sudo update-alternatives --config java

Ahora configure JAVA_HOME y PATH,

$ export JAVA_HOME=<java_home> $ export PATH=$JAVA_HOME/jre/bin:$PATH

Crea el enlace simbólico

$ sudo ln -s <java_home>/jre <java_symlink_path>

Cuando tomamos su caso como ejemplo:

$ sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/java-7-oracle/jre/bin/java

El comando anterior creará la ubicación del enlace simbólico donde el sistema está tratando de encontrar su problema.

Finalmente haz el

$ mvn --version


Esta solución funciona para mí ... simplemente escriba export PATH=$JAVA_HOME/jre/bin:$PATH en el terminal y luego ejecute mvn -version , mostrará el mismo error pero con un registro como este

which: no javac in (/jre/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/puppetlabs/bin) Warning: JAVA_HOME environment variable is not set. Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T22:59:23+05:30) Maven home: /opt/apache-maven-3.2.5 Java version: 1.8.0_171, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"

ahora copie la ruta de Java home , es decir /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre en mi caso.

ahora escribe,

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre

y el error se resuelve. NOTA: pegue su propia ruta que muestra su máquina en mvn log en export JAVA_HOME.


JAVA_HOME debe ser /usr/lib/jvm/java-7-oracle/jre/ .


Si está utilizando mac-OS, debe export JAVA_HOME=/usr/libexec/java_home para export JAVA_HOME=$(/usr/libexec/java_home) . Pasos para hacer esto:

$ vim .bash_profile export JAVA_HOME=$(/usr/libexec/java_home) $ source .bash_profile

donde /usr/libexec/java_home es la ruta de su jvm


Sucede por la razón mencionada a continuación:

Si ve el script mvn: el código falla aquí ---

Pasos para la depuración y reparación:

Paso 1: Abra el script mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Abra con el comando less como: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Paso 2: descubra el siguiente código en el script:

if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM''s JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD="`which java`" fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi

Paso 3: está sucediendo porque no se configuró la variable JAVACMD . Entonces muestra el error.

Nota: para arreglarlo

export JAVACMD=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

Clave: Si desea que sea permanente, abra emacs .profile

publique los comandos y presione Ctrl-x Ctrl-c (save-buffers-kill-terminal).


Suponiendo que utiliza bash shell e instala Java con el instalador de Oracle, puede agregar lo siguiente a su .bash_profile

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

Esto seleccionaría el JAVA_HOME correcto según lo definido por el instalador de Oracle y lo establecerá primero en su $PATH asegurándose de que se encuentre.

Además, no necesita cambiarlo más tarde al actualizar Java.

EDITAR

Según los comentarios:

Hacerlo persistente después de un reinicio

Simplemente agregue esas líneas en el archivo de configuración del shell. (Asumiendo que es bash )

Por .profile : .bashrc , .bash_profile o .profile (para ubuntu)

Usar una instalación Java personalizada

Establezca JAVA_HOME en la carpeta raíz de la ruta de instalación de Java personalizada sin el $() .

Ej: JAVA_HOME=/opt/java/openjdk


Utilice estos dos comandos (para Java 8):

sudo update-java-alternatives --set java-8-oracle java -XshowSettings 2>&1 | grep -e ''java.home'' | awk ''{print "JAVA_HOME="$3}'' | sed "s///jre//g" >> /etc/environment


establecer como está exportar JAVA_HOME = / usr / java / jdk1.8.0_31. y ejecutar con sudo se ejecutará ...


$JAVA_HOME debe ser el directorio donde se instaló java, no una de sus partes:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle