Was ist das richtige Ziel für Sie die Umgebungsvariable JAVA_HOME für Linux OpenJDK Debian-basierte distribution?
In Windows JAVA_HOME
muss auf die JDK-Installationsordner (also, dass JAVA_HOME/bin
enthält alle ausführbaren Dateien und JAVA_HOME/libs
enthält alle Standard - jar
Bibliotheken).
Wenn ich download Sun ' s JDK-bundle und installiert es in Linux ist es die gleiche Prozedur.
Aber ich Kubuntu ist standardmäßig OpenJDK-Paket. Das problem ist, dass alle ausführbaren Dateien befinden sich in /usr/bin
. Aber die Gläser sind in /usr/share/java
. Da Sie nicht unter den gleichen JAVA_HOME
Ordner hab ich Probleme mit Grails und vielleicht gibt es ja auch Probleme mit anderen Anwendungen, die erwarten, dass die standard-Java-Struktur.
-
Wenn ich:
JAVA_HOME=/usr
Alle Anwendungen und Skripte, die wollen jede ausführbare Java-Datei ist die standard-Prozedur
call $JAVA_HOME/bin/executable
. Aber da sind die Gläser in einem anderen Ort, sind Sie nicht immer gefunden wird (Beispiel: in grails ich bin immerClassDefNotFound
fürnative2ascii
). -
Auf der anderen Seite, wenn ich:
JAVA_HOME=/usr/share/java
Keines der Java-executables (
java
,javac
usw.) gefunden werden kann.
Also, was ist der richtige Umgang mit der JAVA_HOME
variable in eine Debian-basierte Linux?
Danke für Eure Hilfe,
Luis
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was schließlich für mich gearbeitet (Grails funktioniert jetzt reibungslos) tut fast so, wie Steve B. hat darauf hingewiesen:
Diese Weise, wenn der Benutzer ändert die Standard-JDK für das system
JAVA_HOME
noch funktioniert.default-java
ist ein symlink auf die aktuelle JVM.Wenn Sie alternativen zum verwalten von mehreren java-Versionen können Sie die
JAVA_HOME
auf der Grundlage der symlinked java (oder javac) wie folgt:/usr/bin/java
zeigt auf ein Skript (/usr/libexec/eselect-java/run-java-tool.bash
). dennoch ist es ein netter Ansatz. das einzige, was ich ändern würde ist, verwenden die Bash-s-builtin-substitution zu vermeiden laichensed
, z.B.:JAVA_HOME=$( j=$( readlink -f /usr/bin/java ) ; echo ${j%%/bin/java} )
javac
zujava
denn nicht jeder hat die JDK installiert; nur die JREDen standard-Ubuntu-Installation zu setzen scheint, die verschiedenen Java-Versionen in
/usr/lib/jvm
. Diejavac
, java, finden Sie in Ihrem Pfad (Soft -) Link zu diesem.Gibt es kein Problem mit der Installation eigener Java-version, wo Sie wollen, solange Sie setzen die
JAVA_HOME
Umgebungsvariablen und stellen Sie sicher, dass die neue Java -bin
auf Ihrem Weg.Einen einfachen Weg, dies zu tun ist, um die Java-home gibt es als Link, so dass, wenn Sie möchten, zu aktualisieren oder wechseln Sie Versionen, die Sie nur haben um das Verzeichnis zu ändern, dass diese Punkte zu - z.B.:
Ich in der Regel don ' T haben keine Umgebungsvariable JAVA_HOME. Java können es sich selbst. Innerhalb von java-java.- home-system-Eigenschaft zur Verfügung stehen sollte.
Versuchen Sie, die JAVA_LIB variable auch.
Soweit ich mich erinnere, habe ich die update-java-alternatives Skript anstelle der update-alternatives. Und es Tat legen Sie die JAVA_HOME für mich richtig.
Wenn Sie Probleme mit JAR-Dateien nicht gefunden, ich wäre auch dafür den CLASSPATH gesetzt ist, gehören der Speicherort dieser Dateien. Ich finde jedoch, dass der CLASSPATH muss oft unterschiedlich eingestellt werden für verschiedene Programme und oft endet als etwas zu eindeutig gesetzt für die einzelnen Programme.
Aktualisierte Antwort, die Ihr problem lösen wird und auch nur eine Allgemeine gute how-to für die Installation von Oracle Java 7 auf Ubuntu finden Sie hier: http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux
Ich habe entdeckt, dass ähnliche Probleme mit dem openjdk-6-jre und openjdk-6-jre-headless-Pakete in Ubuntu.
Mein problem wurde gelöst durch das Ausblasen des openjdk-6-jre und openjdk-6-jre-headless-Pakete und re-installieren. Die alternativen werden nur dann aktualisiert, auf einer frischen Installation des openjdk-6-jre und openjdk-6-jre-headless-Pakete.
Unten ist ein Beispiel der Installation nach dem Spülen:
Die Sie oben sehen können, dass
update-alternatives
ausgeführt, um das setzen von links für die verschiedenen Java-Binärdateien.Nach diesem installieren, dort sind auch links in
/usr/bin
links in/etc/alternatives
und Dateien für jedes Programm in/var/lib/dpkg/alternatives
.Let ' s golftasche das mit der Installation ohne Spülung.
Wie Sie sehen,
update-alternatives
wird nicht ausgelöst.Nachdem diese Installation, es sind keine Dateien für die Java-Binärdateien in
/var/lib/dpkg/alternatives
, keine links in/etc/alternatives
, und keine links in/usr/bin
.Dem entfernen der Dateien in
/var/lib/dpkg/alternatives
bricht auchupdate-java-alternatives
.Ubuntu 12.04 das funktioniert...
JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386/jre
Als update für fedora-Benutzer , alternativen, aktuelle java-Verzeichnis zu
/usr/java/default
so stellen Sie Ihren JAVA_HOME auf /usr/java/default immer alternativen aktuelle Auswahl in der classpath -
HTH !
Meine richtige Ziel war immer, laden Sie es von der Sonne und installieren Sie es einfach auf diese Weise. Dann wissen Sie genau, welches Verzeichnis alles geht.
Aber wenn Sie es vorziehen, zu bleiben, die seltsame Art und Weise, dass Debian installiert, meine beste Vermutung wäre, das übergeordnete Verzeichnis, nur oben, wo die java und javac-Binärdateien befinden.
(seit Wann geben Sie es in Ihren Pfad es ist $JAVA_HOME/bin)
(Also in deinem Fall wäre es ... $JAVA_HOME/share und $JAVA_HOME wäre /usr ?)
Eh, das klingt nicht richtig...
Ich bin daran interessiert zu hören, die Antwort auf diese auch!
Bitte sehen, was das update-alternatives-Befehl hat (Sie hat einen netten Mann...).
Kurz - was passiert, wenn java-sun-1.4-und java-opensouce-1.0 ... die nimmt man "java"? Es debian "/usr/bin/java" ist symbolischer link ist und "/usr/bin/java-sun-1.4" ist eine alternative zu "/usr/bin/java"
Bearbeiten:
Wie Richard sagte:
update-alternatives
ist nicht genug. Sie wirklich brauchen, zu verwendenupdate-java-alternatives
. Mehr info unter:https://help.ubuntu.com/community/Java