Hoe JAVA_HOME in Linux in te stellen voor alle gebruikers

Ik ben nieuw in het Linux-systeem en er lijken te veel Java-mappen te zijn.

java -version geeft me:

  • java-versie “1.7.0_55”
  • OpenJDK runtime-omgeving (rhel-2.4.7.1.el6_5-x86_64 u55-b13)
  • OpenJDK 64-bits server-VM (build 24.51-b03, gemengde modus)

Als ik een Maven-project probeer te bouwen, krijg ik de foutmelding:

Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/java/jdk1.7.0_05/bin/java

Kunt u mij alstublieft vertellen welke bestanden ik moet wijzigen voor zowel root- als niet-rootgebruikers en waar Java precies staat?


Antwoord 1, autoriteit 100%

  1. find /usr/lib/jvm/java-1.x.x-openjdk
  2. vim /etc/profile

    Plaats sudo als u bent aangemeld als niet-bevoegde gebruiker, dwz. sudo vim

  3. Druk op ‘i’ om in de invoegmodus te komen
  4. toevoegen:

    export JAVA_HOME="path that you found"
    export PATH=$JAVA_HOME/bin:$PATH
    
  5. log uit en log opnieuw in, start opnieuw op of gebruik source /etc/profileom wijzigingen onmiddellijk in uw huidige shell toe te passen

Antwoord 2, autoriteit 33%

Voor alle gebruikers raad ik aan om een bestand te maken in /etc/profile.d/java_home.shde volgende regels

# Set JDK installation directory according to selected Java compiler
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

Dit wordt dynamisch bijgewerkt en werkt goed met het alternatieven-systeem. Houd er echter rekening mee dat de update alleen in een nieuwe login-shell zal plaatsvinden.


3, Autoriteit 9%

U kunt / etc / profiel gebruiken of beter een bestand zoals /etc/profile.d/jdk_home.sh

export JAVA_HOME=/usr/java/jdk1.7.0_05/

U moet onthouden dat dit bestand alleen is geladen met nieuwe inlogschelpjes .. dus na Bash -L of een nieuwe GNOME-sessie en dat het niet verandert met nieuwe Java-versies.


4, Autoriteit 8%

Niets van de andere antwoorden was “vasthouden” voor mij in Rhel 7, zelfs instellen JAVA_HOMEen PATHrechtstreeks in /etc/profileof ~/.bash_profilezou niet werken. Elke keer dat ik probeerde te controleren of JAVA_HOMEwas ingesteld, zou het blanco komen:

$ echo $JAVA_HOME
    (<-- no output)

Wat ik moest doen, is een script opgezet in /etc/profile.d/jdk_home.sh:

#!/bin/sh
export JAVA_HOME=/opt/ibm/java-x86_64-60/
export PATH=$JAVA_HOME/bin:$PATH

Ik verwaarloosde aanvankelijk de eerste regel (de #!/bin/sh), en het werkt niet zonder.

Nu werkt het:

$ echo $JAVA_HOME
/opt/ibm/java-x86_64-60/

5, Autoriteit 4%

Het is heel gemakkelijk om een ​​pad in Linux in te stellen. Doe als volgt:

Stap-1 Open Terminal en Type sudo gedit .bashrc

Stap-2 Het zal u uw wachtwoord vragen. Na het typen van het wachtwoord, wordt het BASH-bestand geopend. Ga dan naar het einde en typ onder

Stap-3

  export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
   export PATH=$PATH:$JAVA_HOME/bin

stap-4Sla vervolgens het bestand op en verlaat het bestand

Bovenstaande is voor een enkele gebruiker. Voor alle gebruikers moet u onderstaande stappen volgen

Stap-1gedit /etc/profile

Stap-2export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"

Stap-3export PATH=$PATH:$JAVA_HOME/bin

Ik hoop dat dit helpt. Bedankt!


Antwoord 6, autoriteit 2%

Kopieer het bin-bestandspad dat je hebt geïnstalleerd

YOUR PATH

open terminal en bewerk het omgevingsbestand door de volgende opdracht te typen,

sudo nano /etc/environment

Voeg in dit bestand de volgende regel toe (vervang YOUR_PATHdoor het zojuist gekopieerde pad):

JAVA_HOME="YOUR_PATH"

Dat zou voldoende moeten zijn om de omgevingsvariabele in te stellen. Laad nu dit bestand opnieuw:

source /etc/environment

test het nu door het volgende uit te voeren:

echo $JAVA_HOME

Antwoord 7, autoriteit 2%

Doen wat Oracle doet (als voormalig Sun-medewerker kan ik daar niet aan wennen)

ln -s nieuwsteJavaRelease /usr/java/default
Waar nieuwsteJavaRelease de versie is die u wilt gebruiken

exporteer vervolgens JAVA_HOME=/usr/java/default


Antwoord 8, autoriteit 2%

Het antwoord op eerdere berichten is geldig. Maar geen enkel antwoord is compleet met betrekking tot:

  1. Het wordt niet aanbevolen om het /etc/profile te wijzigen om de reden (zoals vermeld in /etc/profile):
  • Het is GEEN goed idee om dit bestand te wijzigen, tenzij je weet wat je doet. Het is veel beter om een custom.sh shellscript te maken in
    /etc/profile.d/ om aangepaste wijzigingen in uw omgeving aan te brengen, zoals dit:
    zal de noodzaak voor samenvoegen in toekomstige updates voorkomen.*
  1. Dus zoals hierboven vermeld, maak /etc/profile.d/custom.sh bestand voor aangepaste wijzigingen.

  2. Om altijd op de hoogte te blijven van nieuwere versies van Java die worden geïnstalleerd, plaats nooit het absolute pad, maar gebruik:

#if jdk maken als java home

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed “s:/bin/javac::”)

OF

#if jre as java home maken

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

  1. En vergeet niet om # te hebben! /bin/bashin het custom.sh-bestand

Antwoord 9

Dit is een heel eenvoudig script om het probleem op te lossen

export JAVA_HOME_BIN=`which java`
export JAVA_HOME_DIR=`dirname $JAVA_HOME_BIN`
export JAVA_HOME=`dirname $JAVA_HOME_DIR`

En om te testen:

echo $JAVA_HOME

Antwoord 10

1…Gebruik de sneltoets Ctlr+ Alt+ Tom terminal te openen

2…Voer het onderstaande commando uit:

echo export JAVA_HOME='$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")' | sudo tee /etc/profile.d/jdk_home.sh > /dev/null

3 … (aanbevolen) Start uw VM / computer opnieuw op. U kunt source /etc/sourcegebruiken als u de computer niet wilt herstarten

4 … met behulp van de korte snede Ctlr+ Alt+ TTOT DE TERMINAL

5 … Geverifieerde Java_Home-aflevering met

echo $JAVA_HOME

Kopie van één voering van flob , krediet voor hen


11

Posting als antwoord, zoals ik niet het voorrecht heb om commentaar te geven.

punt om op te merken : Volg het geaccepteerde antwoord gepost door “die Dave Guy”.

Nadat u de variabelen instelt, moet u ervoor zorgen dat u de juiste machtigingen instelt naar de Java-directory waar deze is geïnstalleerd.

chmod -R 755 /usr/java

12

Stap 1 – Controleer de huidige Java-versie door “ECHO $ ​​JAVA_HOME”

Stap 2 – VIM / ETC / PROFIEL

Stap 3 – Aan het einde van het bestand vindt u
Export Java_Home, we moeten het nieuwe pad hier bieden, zorg ervoor dat het niet relatief is.

Stap 4 – Opslaan en afsluiten: WQ

Stap 5 – “SOURCE / ETC / PROFIEL /”, dit zou de wijziging

uitvoeren

Stap 6 – Nogmaals, een echo $ Java_Home – verandering zou worden weerspiegeld.


13

Alle operationele stappen (vinden van Java, Parent Dir, bewerkingsbestand, …) Eén oplossing

zFileProfile="/etc/profile"
zJavaHomePath=$(readlink -ze $(which java) | xargs -0 dirname | xargs -0 dirname)
echo $zJavaHomePath
echo "export JAVA_HOME=\"${zJavaHomePath}\"" >> $zFileProfile
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> $zFileProfile

Resultaat:

# tail -2 $zFileProfile
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64"
export PATH=$PATH:$JAVA_HOME/bin

Uitleg:

1) Laten we het volledige commando in stukjes breken

$(readlink -ze $(which java) | xargs -0 dirname | xargs -0 dirname)

2) Zoek Java-pad van Java-opdracht

# $(which java)
"/usr/bin/java"

3) Krijg relatief pad van symbolisch pad

# readlink -ze /usr/bin/java
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/java"

4) Bovenliggend pad van /usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/java

ophalen

# readlink -ze /usr/bin/java | xargs -0 dirname
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin"

5) Bovenliggend pad van /usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64/bin/

ophalen

# readlink -ze /usr/bin/java | xargs -0 dirname | xargs -0 dirname
"/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64"

Antwoord 14

Eerst moet u weten welke Java op uw pc is geïnstalleerd en welke u moet gebruiken.
Voor die open terminal met root-toestemming.

sudo su
 ls /usr/lib/jvm/

Nu worden de beschikbare Java-versies weergegeven.
Selecteer de vermelde versie.

Kopieer het pad tot daar.

Open nu bashrc

 nano ~/.bashrc

voeg de volgende opdrachten toe aan het einde

export JAVA_HOME="path that you copied"
  export PATH=$JAVA_HOME/bin:$PATH

Sla daarna het bestand op en sluit af door op Ctrl+S te drukken gevolgd door Ctrl+X

Voer nu het onderstaande commando uit:

 source ~/.bashrc

Antwoord 15

Waarschijnlijk een goed idee om het profiel dat u bewerkt, op te slaan door een nieuwe login te gebruiken.

ofwel:
bron /etc/
of
. /etc/

Waar is het profiel dat je hebt bewerkt.


Antwoord 16

Onder Linux voeg ik deze regel toe aan mijn ~/.profile:

export JAVA_HOME=$(readlink -ze /usr/bin/javac | xargs -0 dirname -z | xargs -0 dirname)

Antwoord 17

Terwijl we bezig zijn met het instellen van JAVA_HOME, wil ik u enkele voordelen geven van het instellen van JAVA_HOME of een andere omgevingsvariabele:

1) Het is gemakkelijk om JDK te upgraden zonder dat dit gevolgen heeft voor het opstarten van uw toepassing en het configuratiebestand dat verwijst naar JAVA_HOME. u hoeft alleen maar een nieuwe versie te downloaden en ervoor te zorgen dat uw JAVA_HOME verwijst naar een nieuwe versie van Java. Dit is het beste voordeel van het gebruik van omgevingsvariabelen of links.

2) JAVA_HOME-variabele is kort en bondig in plaats van het volledige pad naar de JDK-installatiemap.

3) JAVA_HOME-variabele is platformonafhankelijkheid, d.w.z. als uw opstartscript JAVA_HOME gebruikt, kan het zonder enige wijziging op Windows en UNIX worden uitgevoerd, u hoeft alleen JAVA_HOME op het betreffende besturingssysteem in te stellen.

Lees meer: ​​http: / /Javarevisited.blogspot.com/2012/02/how-to-Set-javahome-environment-in.html#ixzz4bwmayijh


18

In / etc / profiel, als u opent, kunt u weten dat het geen aanbevolen is om op dat bestand te schrijven. In plaats van dat een script van uw opdrachten (veronderstel Test.SH) naar /etc/profile.d-map en plaats Test.SH daar. Telkens wanneer u opnieuw opstart, wordt deze automatisch door / etc / profiel gebeld.


19

Gebruik sdkman sdkman.io om BTW te schakelen. je SDK’s.

Het stelt de Java_Home voor u in.


20

Het gebruik van VIM kan een beetje moeilijk zijn voor een nieuwe gebruiker. We kunnen in plaats daarvan Gedit Text Editor gebruiken.

  1. Zoek /usr/LIB/JVM/JAVA-1.X.X-OPENJDK

  2. Voer “GEDIT / ETC / PROFIEL” in of gebruik “SUDO GEDIT / ETC / PROFIEL” indien ingelogd als niet-bevoorrecht

  3. Voeg het volgende toe aan het einde van de regel:

    Export java_home = “Pad dat je hebt gevonden”

    Exporteerpad = $ Java_Home / Bin: $ pad

  4. Voer “Bron / etc / Profile” in uw huidige schaal in om de wijzigingen toe te passen


21

Ik gebruik de regel:

export JAVA_HOME=$(readlink -f $(dirname $(readlink -f $(which java) ))/../)

naar mijn ~/.profile zodat het de basis van de standaard Java-directory gebruikt tijdens het inloggen. Dit is voor bash.

Other episodes