Nuestros desarrolladores estrellas agotaron sus provisiones de café, por su búsqueda todo el tiempo por la solución, hasta que Gustavo encontró el resultado en GitHub y hoy la compartimos aquí.
Solución:
Si bien parece que su configuración es correcta, hay algunas cosas que debe verificar:
- la salida de
env
– específicamentePATH
. command -v java
te dice que?- Hay un
java
ejecutable en$JAVA_HOMEbin
y tiene el conjunto de bits de ejecución? Que nochmod a+x java
eso.
confío en que tienes source
¿Tuviste tu .profile
después de agregar/cambiar el JAVA_HOME
y PATH
?
Además, puede ayudarse a sí mismo en el mantenimiento futuro de su instalación de JDK escribiendo esto en su lugar:
export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$JAVA_HOME/bin:$PATH
Luego, solo necesita actualizar una variable env cuando configura la instalación de JDK.
Finalmente, es posible que deba ejecutar hash -r
para borrar el caché del programa Bash. Otros shells pueden necesitar un comando similar.
Salud,
update-java-alternatives
Él java
ejecutable no se encuentra con su JAVA_HOME
solo depende de tu PATH
.
update-java-alternatives
Una buena manera de administrarlo para todo el sistema es a través de:
update-java-alternatives -l
Salida de muestra:
java-7-oracle 1 /usr/lib/jvm/java-7-oracle
java-8-oracle 2 /usr/lib/jvm/java-8-oracle
Elige una de las alternativas:
sudo update-java-alternatives -s java-7-oracle
Me gusta update-alternatives
, funciona a través de la gestión de enlaces simbólicos. La ventaja es que administra enlaces simbólicos a todas las utilidades de Java a la vez: javac
, java
, javap
etc.
Todavía estoy por ver un JAVA_HOME
efecto en el JDK. Hasta ahora, solo lo he visto utilizado en herramientas de terceros, por ejemplo, Maven.
Si quieres use JDK descargados del sitio de Oraclelo que funcionó para mí (usando Mint) es usar actualizar-alternativas:
- Descargué el JDK y lo extraje en cualquier lugar, por ejemplo en /home/aqeel/desarrollo/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 usted puede ejecutar
sudo update-alternatives --config java
y elige tu versión java. - Esto no establece el variable JAVA_HOMEque quería configurar, así que lo agregué a mi ~/.bashrc, incluido un
export JAVA_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"
declaración
Ahora, tenía dos JDK descargados (digamos que el segundo ha sido extraído para /home/aqeel/desarrollo/jdk/jdk-10.0.1).
¿Cómo podemos cambiar JAVA_HOME dinámicamente en función del Java actual que se está utilizando?
Mi solución no es muy elegante, estoy bastante seguro de que hay mejores opciones, pero de todos modos:
-
Para cambiar JAVA_HOME dinámicamente en función de la alternativa de Java elegidaagregué este fragmento a ~/.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 tienes que cambiar la versión de java constantementees posible que desee considerar:
-
Agregar un alias para usted ~./bash_alias:
alias change-java="sudo update-alternatives --config java"
(Es posible que deba crear el archivo y tal vez descomentar la sección relacionada con esto en ~/.bashrc)
Al final de la página puedes encontrar las notas de otros desarrolladores, tú igualmente tienes la libertad de dejar el tuyo si te gusta.