Unter Windows muss Java_HOME
Auf den JDK-Installationsordner verweisen (damit Java_HOME/bin
Alle ausführbaren Dateien und Java_HOME/libs
Alle Standardbibliotheken jar
enthält).
Wenn ich das JDK-Bundle von Sun herunterlade und es unter Linux installiere, geschieht dies auf die gleiche Weise.
Ich muss jedoch Kubuntus Standard-OpenJDK-Paket verwenden. Das Problem ist, dass alle ausführbaren Dateien in /usr/bin
Abgelegt werden. Die Gläser werden jedoch in /usr/share/Java
Platziert. Da sie sich nicht im selben Java_HOME
Ordner befinden, habe ich Probleme mit Grails und möglicherweise gibt es Probleme mit anderen Anwendungen, die die Standardstruktur Java) erwarten.
Wenn ich benutze:
Java_HOME=/usr
Alle Anwendungen und Skripte, die eine beliebige Java ausführbare Datei verwenden möchten, können die Standardprozedur call $Java_HOME/bin/executable
Verwenden. Da sich die Jars jedoch an einer anderen Stelle befinden, werden sie nicht immer gefunden (Beispiel : in grails bekomme ich ClassDefNotFound
für native2ascii
).
Auf der anderen Seite, wenn ich benutze:
Java_HOME=/usr/share/Java
Keine der Java ausführbaren Dateien (Java
, javac
usw.) kann gefunden werden.
Was ist nun die richtige Art und Weise, mit der Java_HOME
- Variable in einem Debian-basierten Linux umzugehen?
Danke für deine Hilfe, Luis
Was letztendlich für mich funktioniert hat (Grails funktioniert jetzt reibungslos), ist fast so, wie Steve B. es hervorgehoben hat:
Java_HOME=/usr/lib/jvm/default-Java
Wenn der Benutzer das Standard-JDK für das System ändert, wird auf diese Weise Java_HOME
funktioniert noch.
default-Java
ist ein Symlink zur aktuellen JVM.
Wenn Sie Alternativen zum Verwalten mehrerer Java Versionen verwenden, können Sie Java_HOME
basierend auf dem symlinked Java (oder javac) wie folgt:
export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")
Die Ubuntu-Standardinstallation scheint die verschiedenen Java Versionen in /usr/lib/jvm
. Das javac
, Java), das Sie in Ihrem Pfad finden, wird einen Softlink dazu erstellen.
Es gibt kein Problem mit der Installation Ihrer eigenen Java Version, wo immer Sie möchten, solange Sie das Java_HOME
Umgebungsvariable und stellen Sie sicher, dass das neue Java bin
auf Ihrem Pfad ist.
Eine einfache Möglichkeit, dies zu tun, besteht darin, das Java= home als Softlink zu verwenden. Wenn Sie also Versionen aktualisieren oder wechseln möchten, müssen Sie nur das Verzeichnis ändern, auf das dies verweist - z. B .:
/usr/bin/Java --> /opt/jdk/bin/Java,
/opt/jdk --> /opt/jdk1.6.011
Versuchen Sie auch, die Variable Java_LIB festzulegen.
Als Update für Fedora-Benutzer setzen Alternativen das aktuelle Java Verzeichnis auf/usr/Java/default
sie müssen also Ihr Java_HOME auf/usr/Java/default setzen, damit in Ihrem Klassenpfad immer Alternativen zur Auswahl stehen
HTH!
Wenn Sie Probleme damit haben, dass JAR-Dateien nicht gefunden werden, stelle ich auch sicher, dass CLASSPATH den Speicherort dieser Dateien enthält. Ich finde jedoch, dass der KLASSENPFAD oft für verschiedene Programme unterschiedlich eingestellt werden muss und am Ende oft etwas ist, das für einzelne Programme eindeutig eingestellt werden kann.
Soweit ich mich erinnere, habe ich das Skript update-Java-alternatives anstelle der update-alternatives verwendet. Und es hat das Java_HOME für mich richtig eingestellt.
Ich habe ähnliche Probleme mit den Paketen openjdk-6-jre und openjdk-6-jre-headless in Ubuntu entdeckt.
Mein Problem wurde gelöst, indem die Pakete openjdk-6-jre und openjdk-6-jre-headless gelöscht und neu installiert wurden. Die Alternativen werden nur bei einer Neuinstallation der Pakete openjdk-6-jre und openjdk-6-jre-headless aktualisiert.
Nachfolgend finden Sie ein Beispiel für die Installation nach dem Entleeren:
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.
...
Sie können darüber sehen, dass update-alternatives
wird ausgeführt, um Links für die verschiedenen Java binaries) einzurichten.
Nach dieser Installation gibt es auch Links in /usr/bin
, Links in /etc/alternatives
und Dateien für jede Binärdatei in /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
Lassen Sie uns dies mit der Installation ohne Bereinigung abwägen.
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) ...
...
Wie du siehst, update-alternatives
wird nicht ausgelöst.
Nach dieser Installation gibt es keine Dateien für die Java binaries in /var/lib/dpkg/alternatives
, keine Links in /etc/alternatives
und keine Links in /usr/bin
.
Das Entfernen der Dateien in /var/lib/dpkg/alternatives
bricht auch update-Java-alternatives
.
Ubuntu 12.04 das funktioniert ...
Java_HOME =/usr/lib/jvm/Java-6-openjdk-i386/jre
Eine aktualisierte Antwort, die Ihr Problem löst, sowie eine allgemeine Anleitung zur Installation von Oracle Java 7 auf Ubuntu finden Sie hier: http://www.wikihow.com)/Install-Oracle-Java-on-Ubuntu-Linux
Normalerweise habe ich keine Java_HOME-Umgebungsvariable. Java kann es selbst einrichten. Innerhalb Java java.home sollte die Systemeigenschaft verfügbar sein.