Was ist der Wert von JAVA_HOME für CentOS?

37

Ich habe Java über yum unter CentOS installiert, aber ein anderes Java-Programm muss wissen, was die Umgebungsvariable JAVA_HOME ist. Ich weiß alles über das Festlegen von Umgebungsvariablen, aber auf was stelle ich es ein? javainstalliert ist /usr/bin/java, kann es nicht da sein!

Rory
quelle

Antworten:

54

Eigentlich habe ich es gefunden,

es ist /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Ich fand heraus, was es war, update-alternatives --display javaund es zeigte mir das Verzeichnis/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

Rory
quelle
20

Ich bin mir nicht ganz sicher, aber wenn Sie das normale RPMS installieren, kann der JAVA_HOME-Wert auch so eingestellt werden:

/usr/java/default/

EDIT: Ich habe gerade mein Heimsystem überprüft. Ich habe diese Datei erstellt:

/etc/profile.d/java.sh

Das beinhaltet:

export JAVA_HOME=/usr/java/default/

und ich benutze die offizielle Version von Sun: jdk-1.6.0_12-fcs

BEARBEITEN: So richte ich Java auf meinem Computer ein :

Installieren Sie Java

Laden Sie Java JDK von Oracle herunter und installieren Sie es

Machen Sie es primär

Stellen Sie mithilfe der folgenden beiden Befehle sicher, dass dieses Java anstelle der OpenJDK-Version verwendet wird:

Zuerst

alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
           --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry

Zweite

alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/java/default/bin/rmic

Setzen Sie JAVA_HOME

Stellen Sie sicher, dass für alle Benutzer die Umgebungsvariable JAVA_HOME auf den richtigen Wert festgelegt ist:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
Niels Basjes
quelle
Oh, interessant. :)
Rory
1
/usr/java/defaultIn meiner CentOS 6-Box ist kein mit OpenJDK 1.6 und 1.7 installiert.
Daniel Serodio
@ DanielSerodio Richtig. Ich habe "Java JDK von Oracle herunterladen und installieren" klar beschrieben und dann existiert es.
Niels Basjes
2

Sie möchten JAVA_HOME als Stammspeicherort des JDK oder der JRE festlegen. Beispiel:

export JAVA_HOME=/usr/java/jdk1.3

Wenn das JDK (Development Kit) installiert ist, möchten Sie wahrscheinlich, dass es darauf verweist, und verwenden Sie den JRE-Pfad (Java Runtime Environment). Dann möchten Sie vielleicht Ihre Umgebungsvariable $ PATH so einstellen, dass sie auch das bin-Verzeichnis enthält:

export PATH=$PATH:/usr/java/jdk1.3/bin

Wenn Sie Tomcat verwenden, müssen Sie möglicherweise auch CATALINA_HOME für den Tomcat-Benutzer festlegen.

export CATALINA_HOME=/path/to/tomcat

Um dies für das System festzulegen, müssen Sie Ihr / etc / profile bearbeiten oder eine .sh-Datei im Ordner /etc/profile.d hinzufügen. Für einen bestimmten Benutzer können Sie ihn in die Benutzerdateien ~ / .profile oder ~ / .bash_profile einfügen.

Kyle Brandt
quelle
Ich frage mich, ob es einen guten Grund gibt, warum die Installation dies nicht für Sie erledigt, wenn Sie als Superuser ausgeführt werden. Ich finde es immer irritierend ...
Kyle Brandt
2

Das Folgende funktioniert bei mir immer perfekt:

[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws

Dies bedeutet, dass ich JAVA_HOME als /usr/java/jdk1.6.0_31 festlegen kann

Prashant
quelle
1

Ich dachte über das Problem nach, ob man die Java-Version ändert, die verwendet wird mit:

alternatives --config java

Dann wird sich jeder fest codierte Code JAVA_HOMEändern (zumindest bei den Centos 6.6, auf die ich gerade starre). Das heißt, es gibt keine /usr/java.

Dies scheint nicht der beste Weg zu sein (offen für Fehler), aber in den 10 Minuten, die ich damit verbracht habe, scheint es der beste zu sein.

In habe /etc/bashrcich die Einstellung geändert, um JAVA_HOMEzu sein:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

Sie müssen unter MacOSX etwas Ähnliches tun, aber ohne all das grepund sedum das Ergebnis zu analysieren. Sicherlich alternativesbietet sich eine ähnlich einfachere Lösung an.

Trotzdem hoffe ich, dass ich geholfen habe.


Aktualisieren

Nein das wäre JRE_HOME. Das JDK / SDK ist nicht so offensichtlich (ich werde weiter suchen).

Es alternativesscheint sich standardmäßig nur um die JRE zu handeln. Ich verlasse mich auf @Niels Antwort oder installiere einfach Java mit yumund setze das JAVA_HOME auf das (der Trick ist, wo ich gefunden habe, wo das installiert wurde!).

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

Mir java_1.8.0ist ein Symlink auf aufgefallen /etc/alternatives/java_sdk_1.8.0und ich habe mein $ JAVA_HOME auf gesetzt /usr/lib/jvm/java_1.8.0. In der /etc/bashrc.

HankCa
quelle
0

Das ist seltsam, der Sinn einer JAVE_HOME-Umgebungsvariablen besteht darin, dass Sie nicht den Pfad zu jedem Programm angeben müssen, sondern diesen Pfad ermitteln müssen, indem Sie nach dieser Variablen suchen.

In beiden Fällen können Sie die Umgebungsvariable für JAVA_HOME korrekt ermitteln, indem Sie echo verwenden:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

Durch Ausführen dieses Befehls wird der Pfad unabhängig von der von Ihnen ausgeführten Version über die Befehlszeile angezeigt.

Dave Drager
quelle
2
Die Variable wurde nicht gesetzt.
Rory
0

Informationen zu Centos7 finden Sie in der Datei /etc/java/java.conf.

JAVA_HOME soll sich in folgendem Verzeichnis befinden: / usr / lib / jvm / java

Ich habe überprüft, es ist die richtige Version des JDK, das ich über YUM geladen habe, und so ...

In meinem Env ist JAVA_HOME nicht standardmäßig eingestellt, daher habe ich es in .bash_profile eingestellt

theRiley
quelle
0

Ich fand das Paket - Manager in einer Vielzahl von Standorten platzieren können, so verwenden die (Sie müssen explizit diese installieren , wenn ein Behälter verwendet wird ) die folgenden ist etwas weniger spröde

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

oder für JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
Jules Clements
quelle