ver variable restaurar java_home entorno configurar java grails openjdk java-home debian-based

java - restaurar - variables de entorno linux



¿Cuál es el objetivo correcto para la variable de entorno JAVA_HOME para una distribución Linux OpenJDK basada en Debian? (13)

Como una actualización para el usuario de Fedora, las alternativas establecen el directorio actual de Java en / usr / java / default

por lo tanto, debe configurar su JAVA_HOME en / usr / java / default para tener siempre opciones alternativas de selección en su classpath

HTH!

En Windows, JAVA_HOME debe apuntar a la carpeta de instalación de JDK (para que JAVA_HOME/bin contenga todos los ejecutables y JAVA_HOME/libs contenga todas las bibliotecas jar defecto).

Si descargo el paquete JDK de Sun y lo instalo en Linux, es el mismo procedimiento.

Sin embargo, necesito usar el paquete OpenJDK predeterminado de Kubuntu. El problema es que todos los ejecutables se colocan en /usr/bin . Pero los frascos se colocan en /usr/share/java . Como no están en la misma carpeta JAVA_HOME , tengo problemas con Grails y tal vez haya problemas con otras aplicaciones que esperan la estructura Java estándar.

  1. Si uso:

    JAVA_HOME=/usr

    Todas las aplicaciones y scripts que quieran usar cualquier ejecutable Java pueden usar el procedimiento estándar call $JAVA_HOME/bin/executable . Sin embargo, dado que los frascos están en un lugar diferente, no siempre se encuentran (por ejemplo: en ClassDefNotFound native2ascii ClassDefNotFound para native2ascii ).

  2. Por otro lado, si uso:

    JAVA_HOME=/usr/share/java

    Ninguno de los ejecutables Java ( java , javac , etc.) se puede encontrar.

Entonces, ¿cuál es la forma correcta de manejar la variable JAVA_HOME en un Linux basado en Debian?

Gracias por tu ayuda, Luis


Descubrí problemas similares con los paquetes openjdk-6-jre y openjdk-6-jre-headless en Ubuntu.

Mi problema se resolvió purgando los paquetes openjdk-6-jre y openjdk-6-jre-headless y reinstalando. Las alternativas solo se actualizan en una nueva instalación de los paquetes openjdk-6-jre y openjdk-6-jre-headless.

A continuación se muestra una muestra de la instalación después de la purga:

aptitude purge openjdk-6-jre openjdk-6-jre-headless # to ensure no configuration exists aptitude install --without-recommends openjdk-6-jre # Installing without some extras Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done The following NEW packages will be installed: ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a} openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a} The following packages are RECOMMENDED but will NOT be installed: icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra 0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded. Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used. Do you want to continue? [Y/n/?] Writing extended state information... Done Selecting previously deselected package openjdk-6-jre-lib. (Reading database ... 62267 files and directories currently installed.) Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ... ... Processing triggers for man-db ... Setting up tzdata-java (2012e-0ubuntu0.10.04) ... ... Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ... update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/java to provide /usr/bin/java (java) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode. update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode. Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ... update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode. ...

Puede ver arriba que update-alternatives se ejecuta para configurar enlaces para los diversos binarios de Java.

Después de esta instalación, también hay enlaces en /usr/bin , enlaces en /etc/alternatives y archivos para cada binario en /var/lib/dpkg/alternatives .

ls -l /usr/bin/java /etc/alternatives/java /var/lib/dpkg/alternatives/java lrwxrwxrwx 1 root root 40 2013-01-16 14:44 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java lrwxrwxrwx 1 root root 22 2013-01-16 14:44 /usr/bin/java -> /etc/alternatives/java -rw-r--r-- 1 root root 158 2013-01-16 14:44 /var/lib/dpkg/alternatives/java

Vamos a contar esto con la instalación sin purgar.

aptitude remove openjdk-6-jre aptitude install --without-recommends openjdk-6-jre Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done The following NEW packages will be installed: ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a} openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a} The following packages are RECOMMENDED but will NOT be installed: icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra 0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded. Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used. Do you want to continue? [Y/n/?] Writing extended state information... Done Selecting previously deselected package openjdk-6-jre-lib. (Reading database ... 62293 files and directories currently installed.) Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ... ... Processing triggers for man-db ... ... Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ... Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ... ...

Como puede ver, update-alternatives no se activan.

Después de esta instalación, no hay archivos para los binarios de Java en /var/lib/dpkg/alternatives , no hay enlaces en /etc/alternatives , y no hay enlaces en /usr/bin .

La eliminación de los archivos en /var/lib/dpkg/alternatives también rompe update-java-alternatives .


Intenta configurar la variable JAVA_LIB también.


La instalación estándar de Ubuntu parece poner las diversas versiones de Java en /usr/lib/jvm . El javac , java que encuentres en tu camino, se enlazará a esto.

No hay problema con la instalación de su propia versión de Java en cualquier lugar que desee, siempre y cuando configure la variable de entorno JAVA_HOME y asegúrese de tener el nuevo bin Java en su ruta.

Una forma simple de hacer esto es hacer que la casa de Java exista como enlace de software, de modo que si desea actualizar o cambiar versiones solo tiene que cambiar el directorio al que apunta, por ejemplo:

/usr/bin/java --> /opt/jdk/bin/java, /opt/jdk --> /opt/jdk1.6.011



Lo que finalmente funcionó para mí (Grails ahora funciona sin problemas) está haciendo casi lo mismo que Steve B. ha señalado:

JAVA_HOME=/usr/lib/jvm/default-java

De esta forma, si el usuario cambia el JDK predeterminado para el sistema, JAVA_HOME aún funciona.

default-java es un enlace simbólico a la JVM actual.


Mi objetivo correcto siempre ha sido descargarlo de Sun y simplemente instalarlo de esa manera. Entonces sabes exactamente en qué directorio está todo.

Pero si prefieres seguir con la extraña forma en que Debian lo instala, mi mejor opción sería el directorio principal justo arriba, donde se encuentran los binarios java y javac.

(ya que cuando lo especifica en su ruta es $ JAVA_HOME / bin) (Entonces, en su caso, sería ... $ JAVA_HOME / compartir y $ JAVA_HOME sería / usr?)

Eh, eso no suena bien ...

¡Estoy interesado en escuchar la respuesta a esto también!


Normalmente no tengo ninguna variable de entorno JAVA_HOME. Java puede configurarlo por sí mismo. Dentro de la propiedad del sistema Java java.home debería estar disponible.


Por favor, vea qué hace el comando update-alternatives (tiene un buen hombre ...).

En breve, ¿qué ocurre cuando tienes java-sun-1.4 y java-opensouce-1.0 ... cuál de ellos toma "java"? Debian "/ usr / bin / java" es un enlace simbólico y "/usr/bin/java-sun-1.4" es una alternativa a "/ usr / bin / java"

Editar: Como dijo Richard, update-alternatives no es suficiente. Realmente necesita usar update-java-alternatives . Más información en:

https://help.ubuntu.com/community/Java


Por lo que recuerdo, utilicé el script update-java-alternatives en lugar de las alternativas de actualización. Y configuró el JAVA_HOME para mí correctamente.


Si tiene problemas con los archivos JAR que no se encuentran, también me aseguraré de que su CLASSPATH esté configurada para incluir la ubicación de esos archivos. Sin embargo, sí encuentro que CLASSPATH a menudo necesita establecerse de manera diferente para diferentes programas y, a menudo, termina siendo algo para establecer de forma única para programas individuales.


Si usa alternativas, puede establecer el JAVA_HOME basado en el enlace simbólico de Java de esta manera:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")


Ubuntu 12.04 esto funciona ...

JAVA_HOME = / usr / lib / jvm / java-6-openjdk-i386 / jre