setup java_home configurar check java linux environment-variables linuxmint

configurar - JAVA_HOME y PATH están configurados pero java-version todavía muestra el anterior



set java_home ubuntu (9)

Estoy usando Linux Mint Cinnamon 14. He establecido las variables de entorno $JAVA_HOME y $PATH en ~/.profile siguiente manera:

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH

Luego hice source ~/.profile para hacer los cambios apropiados.

Cuando ejecuto el comando java -version para verificar la versión java activa, muestra la versión java predeterminada (ya abierta) de jdk abierto. ¿Cómo puedo anular el jdk abierto predeterminado con el que descargué?

ACTUALIZAR:

which java dice / usr / bin / java

$JAVA_HOME/bin/java -version dice ''Permiso denegado''

sudo $JAVA_HOME/bin/java -version (pregunta por la contraseña, entonces) dice Comando no encontrado

pero cd $JAVA_HOME/bin , y ls muestra que es el directorio correcto.


$ JAVA_HOME / bin / java -version dice ''Permiso denegado''

Si no puede acceder o ejecutar código, se ignorará si se agrega a su ruta. Debe hacer que sea accesible y ejecutable u obtener una copia propia.

Haz un

ls -ld $JAVA_HOME $JAVA_HOME/bin $JAVA_HOME/bin/java

para ver por qué no puedes acceder o ejecutar este programa,


Actualizar el ~/.profile o ~/.bash_profile no funciona a veces. Acabo de eliminar JDK 6 y source d .bash_profile .

Intenta ejecutar esto:

sudo rm -rd jdk1.6.0_* #it may not let you delete without sudo

Luego, modifique / agregue sus variables JAVA_HOME y PATH.

source ~/.bash_profile #assuming you''ve updated $JAVA_HOME and $PATH


Cuando busca java, se ve de izquierda a derecha en las entradas de ruta separadas por: por lo que necesita agregar la ruta del último directorio jdk / bin antes / usr / bin, de modo que cuando busque encontrará la última y deja de buscar más.

es decir, PATH = / usr / java / jdk_1.8 / bin: / usr / bin: ..... y así sucesivamente.

luego inicialice el perfil del usuario usando el comando: source ~ / .bash_profile

y verifique con: [cual java]

obtendrás el correcto.


En Linux Mint 18 Cinnamon asegúrate de comprobar /etc/profile.d/jdk_home.sh Cambié el nombre de este archivo a jdk_home.sh.old y ahora mi ruta no se sobrescribe y puedo llamar a java -version y ver Java 9 como esperado. Aunque seleccioné correctamente Java 9 en update-aternatives --config java este archivo jdk_home.sh anuló el $ PATH en el arranque.


Hay una manera fácil, simplemente elimine el enlace simbólico de "/ usr / bin". Funcionará.


Lo más simple de todo sería eliminar el enlace o editar / usr / bin / java. esto tiene un llamado para ejecutar java en la ruta mencionada.


Si bien parece que su configuración es correcta, hay algunas cosas que debe comprobar:

  1. La salida de env - específicamente PATH .
  2. which java te dice que?
  3. ¿Hay un ejecutable java en $JAVA_HOME/bin y tiene el bit de ejecución establecido? Si no es chmod a+x java it.

Confío en que tiene la source ''d su .profile después de agregar / cambiar el JAVA_HOME y la PATH ?

Además, puede ayudarse a sí mismo en el mantenimiento futuro de su instalación JDK escribiendo

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 export PATH=$JAVA_HOME/bin:$PATH

en lugar. Entonces solo necesita actualizar una variable env al configurar la instalación de JDK.

Aclamaciones,


Si desea utilizar los JDK descargados del sitio de Oracle , lo que funcionó para mí (utilizando Mint) es usar las alternativas de actualización :

  1. Descargué el JDK y lo extraje en cualquier lugar, por ejemplo en /home/aqeel/development/jdk/jdk1.6.0_35
  2. Corrí:

    sudo update-alternatives --install /usr/bin/java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/java 1`

    Ahora puede ejecutar sudo update-alternatives --config java y elegir su versión java .

  3. Esto no establece la variable JAVA_HOME , que quería configurar, así que simplemente la agregué a mi ~ / .bashrc, incluida una declaración de export JAVA_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"

Ahora, tuve dos JDK descargados (digamos que el segundo ha sido extraído a /home/aqeel/development/jdk/jdk-10.0.1 ).

¿Cómo podemos cambiar el JAVA_HOME dinámicamente basado en el java actual que se está utilizando?

Mi solución no es muy elegante, estoy seguro de que hay mejores opciones, pero de todos modos:

  1. Para cambiar el JAVA_HOME dinámicamente basado en la alternativa java elegida , agregué este fragmento al ~ / .bashrc:

    export JAVA_HOME=$(update-alternatives --query java | grep Value: | awk -F''Value: '' ''{print $2}'' | awk -F''/bin/java'' ''{print $1}'')

Finalmente (esto está fuera del alcance) si tiene que cambiar constantemente la versión de Java , es posible que desee considerar:

  1. Agregar un alias a sus ~. / Bash_aliases :

    alias change-java="sudo update-alternatives --config java"

(Puede que tenga que crear el archivo y tal vez descomentar la sección relacionada con esto en ~ / .bashrc )


update-java-alternatives

El ejecutable de java no se encuentra con su JAVA_HOME , solo depende de su PATH .

update-java-alternatives es una buena forma de administrarlo para todo el sistema mediante:

update-java-alternatives -l

Muestra de salida:

java-7-oracle 1 /usr/lib/jvm/java-7-oracle java-8-oracle 2 /usr/lib/jvm/java-8-oracle

Elija una de las alternativas:

sudo update-java-alternatives -s java-7-oracle

Al igual que update-alternatives , funciona a través de la administración de enlaces simbólicos. La ventaja es que gestiona los enlaces simbólicos a todas las utilidades de Java a la vez: javac , java , javap , etc.

Todavía tengo que ver un efecto JAVA_HOME en el JDK. Hasta ahora, solo he visto su uso en herramientas de terceros, por ejemplo , Maven .