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:
- La salida de
env
- específicamentePATH
. -
which java
te dice que? - ¿Hay un ejecutable
java
en$JAVA_HOME/bin
y tiene el bit de ejecución establecido? Si no eschmod 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 :
- Descargué el JDK y lo extraje en cualquier lugar, por ejemplo en /home/aqeel/development/jdk/jdk1.6.0_35
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 .- 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:
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:
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 .