Vraag Hoe JAVA_HOME te bepalen op Debian / Ubuntu?


Op Ubuntu is het mogelijk om meerdere JVM's tegelijk te hebben. De standaardwaarde is geselecteerd met update-alternatives. Maar dit stelt de JAVA_HOME omgevingsvariabele, vanwege a debian beleid.

Ik schrijf een lanceerscript (bash), waarmee een Java-toepassing wordt gestart. Deze Java-applicatie heeft de JAVA_HOME omgevingsvariabele. Dus hoe het pad van de JVM te krijgen die momenteel is geselecteerd door update-alternatives?


90
2018-05-20 15:09


oorsprong




antwoorden:


Voor de JRE zou zoiets de slag moeten slaan:

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

133
2018-05-20 17:55



Ik had het huis van de JDK nodig in plaats van de JRE, maar ik kreeg dit gebruik: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") Bedankt! - Witek
toen ik het commando probeerde echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), de uitvoer was /usr/lib/jvm/java-7-oracle/jre/ en niet /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
Code gegeven in rsaddey werkt correct - Sumit Ramteke


de oplossing van danadam kan eenvoudig worden gebruikt om het JDK (d.w.z. niet JRE) pad naar behoefte op te halen:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Zoekt naar javac Java-compiler (in plaats van java) opgenomen in JDK (maar niet JRE).
  • Heeft geen trailing / (gestript door sed s: / bin ... in plaats van s: bin ...)

43
2018-06-02 08:44





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

In .bashrc was handig voor mij.


12
2018-04-25 09:34





Dus je zegt dat deze opdracht niets voor jou doet?

sudo update-alternatives --config java 

9
2018-05-20 15:14



Moet dat je JAVA_HOME instellen? Ik heb gemerkt dat update-java-alternatieven een betere manier is om Java bij te werken omdat update-alternatieven niet alle Java-gerelateerde alternatieven bijwerken. Zien askubuntu.com/questions/141791 - James McMahon
Klopt, maar ik ben gevallen van Linux tegengekomen die update-alternatieven hadden maar geen update-java-alternatieven hadden geïnstalleerd. - djangofan


Ik heb Java geïnstalleerd met

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

en dan om de locatie te vinden

ls -al /etc/alternatives/java

3
2018-03-05 03:40





Als een uitbreiding van danadams antwoord:

Installeer eerst de 2e Java JRE als de derde Java-optie, met prioriteit van "3":

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

Vervolgens kunt u ze opsommen:

update-alternatives --list java

U kunt het alternatief met de hand instellen door dit te gebruiken:

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

Dan kan je script het meteen instellen, zoals zo:

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

Dit illustreert beter wat de opdracht 'sed' aan het doen is. Hoewel je nog steeds de links voor javaw en javac, enz. Moet instellen, worden ze elk apart gedaan.


2
2018-03-02 16:40





Een tijdje geleden heb ik een tutorial op het Ubuntu-forum gemaakt over hoe de nieuwste JRE / JDK van de Java-website te installeren. Het behandelt ook hoe het voor het hele systeem in te schakelen, door de JRE / JDK-locatie toe te voegen aan de variabele PATH. Als je wilt, kun je ook JAVA_HOME toevoegen aan het script, dat aan het einde van het onderwerp wordt genoemd.

Bekijken: http://ubuntuforums.org/showthread.php?t=1437100


1
2018-05-20 18:47