Frage Wie kann man JAVA_HOME unter Debian / Ubuntu ermitteln?


Unter Ubuntu ist es möglich, mehrere JVMs gleichzeitig zu haben. Der Standardwert ist ausgewählt mit update-alternatives. Aber das setzt nicht die JAVA_HOME Umgebungsvariable aufgrund von a Debian-Politik.

Ich schreibe ein Launcher-Skript (bash), das eine Java-Anwendung startet. Diese Java-Anwendung benötigt die JAVA_HOME Umgebungsvariable. So, wie man den Pfad der JVM bekommt, die aktuell von gewählt wird update-alternatives?


90
2018-05-20 15:09


Ursprung




Antworten:


Für die JRE sollte so etwas funktionieren:

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

133
2018-05-20 17:55



Ich brauchte die Heimat des JDK statt der JRE, aber ich habe das mit: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") Danke! - Witek
als ich den Befehl ausprobierte echo $(readlink -f /usr/bin/java | sed "s:bin/java::")war die Ausgabe /usr/lib/jvm/java-7-oracle/jre/ und nicht /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
Code angegeben in rsaddey funktioniert richtig - Sumit Ramteke


Danadams Lösung kann leicht übernommen werden, um den JDK-Pfad (d. h. nicht JRE) nach Bedarf abzurufen:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Sucht nach Javac-Java-Compiler (anstelle von Java), der in JDK enthalten ist (aber nicht in JRE).
  • Hat kein abschließendes / (abgestreift von sed s: / bin ... anstelle von s: bin ...)

43
2018-06-02 08:44





export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

Im .bashrc war praktisch für mich.


12
2018-04-25 09:34





Also, Sie sagen, dass dieser Befehl nichts für Sie tut?

sudo update-alternatives --config java 

9
2018-05-20 15:14



Soll das deine JAVA_HOME einstellen? Ich habe festgestellt, dass update-java-alternatives eine bessere Möglichkeit bietet, Java zu aktualisieren, da update-alternatives nicht alle Java-bezogenen Alternativen aktualisiert. Sehen askubuntu.com/questions/141791 - James McMahon
True, aber ich habe Instanzen von Linux gefunden, die Update-Alternativen hatten, aber keine Update-Java-Alternativen installiert hatten. - djangofan


Ich habe Java mit installiert

sudo apt-get install openjdk-7-jre-headless

und dann den Ort zu finden

ls -al /etc/alternatives/java

3
2018-03-05 03:40





Als eine Erweiterung von danadams antworten:

Installieren Sie zunächst die 2. Java JRE als 3. Java-Option mit der Priorität "3":

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

Dann können Sie sie auflisten:

update-alternatives --list java

Sie können die Alternative manuell festlegen, indem Sie Folgendes verwenden:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

Dann kann Ihr Skript es im laufenden Betrieb so einstellen:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Dies veranschaulicht besser, was der 'sed' Befehl macht. Obwohl Sie immer noch die Links für javaw und javac usw. setzen müssen, werden beide separat ausgeführt.


2
2018-03-02 16:40





Vor einiger Zeit habe ich ein Tutorial zum Ubuntu-Forum erstellt, um zu erfahren, wie man das neueste JRE / JDK von der Java-Website installiert. Außerdem wird beschrieben, wie Sie es systemweit aktivieren können, indem Sie der PATH-Variablen den JRE / JDK-Speicherort hinzufügen. Wenn Sie möchten, können Sie auch JAVA_HOME zum Skript hinzufügen, das am Ende des Themas erwähnt wird.

Hör zu: http://ubuntuforums.org/showthread.php?t=1437100


1
2018-05-20 18:47