Come impostare JAVA_HOME per Java?


303

Ho installato una versione di Java. Come possiamo impostare $JAVA_HOMEcorrettamente la variabile d'ambiente?

Risposte:


422

È possibile impostare il JAVA_HOMEa /etc/profilecome Petronilla escarabajo suggerisce. Ma la posizione preferita per JAVA_HOMEo qualsiasi variabile di sistema è /etc/environment.

Apri /etc/environmentin qualsiasi editor di testo come nanoo gedite aggiungi la seguente riga:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(il percorso java potrebbe essere diverso)

Utilizzare sourceper caricare le variabili, eseguendo questo comando:

source /etc/environment

Quindi controlla la variabile, eseguendo questo comando:

echo $JAVA_HOME

Aggiornare

Di solito la maggior parte dei sistemi linux fonte / etc / environment di default. Se il tuo sistema non lo fa, aggiungi la seguente riga a ~/.bashrc(Grazie @pje)

source /etc/environment

2
Quando ho provato a eseguire Android Studio (che ha IntelliJ IDEA come base), ho avuto un messaggio di errore molto simile a quello di @ advocate: "'tools.jar' sembra non essere nel percorso di classe di Android Studio." Dopo aver armeggiato molto con JAVA_HOME senza successo, ho deciso di dare un'occhiata a studio.sh, lo shellscript che avvia Android Studio. Come ipotesi selvaggia, ho impostato JDK_HOME sullo stesso valore previsto per JAVA_HOME e voilà! Si è installato senza grandi problemi.
Hilton Fernandes,

3
Per coloro che stanno sviluppando software, non inserire JAVA_HOME in / etc / environment a meno che non si desideri riavviare ogni volta che si cambia versione JDK.
HDave,

2
Questa è una soluzione temporanea, come altri hanno sottolineato. Nessuno vorrebbe eseguire il sorgente ogni volta che riavvia la propria bash.
yuranos87,

6
Come altri hanno sottolineato, questo non si attacca tra le sessioni terminali. Quello che ho fatto per risolvere questo problema è appena stato aggiunto la riga source /etc/environmentnella parte superiore del mio file di configurazione di bash in ~/.bashrcmodo che carichi tutte le mie impostazioni di ambiente all'avvio. Lavorare per me finora.
pje l'

2
@sedulam Ho aggiornato la risposta
Manula Waidyanatha,

79

Per impostare JAVA_HOMEla variabile di ambiente, attenersi alla seguente procedura:

  1. Avviare Terminal premendo Ctrl+ Alt+ Tsulla tastiera.
  2. Immettere il comando seguente:
    $gksudo gedit /etc/environment
  3. A seconda di dove hai installato Java, dovrai fornire il percorso completo. Per questo esempio, ho installato Oracle JDK 7 nella /usr/lib/jvm/java-7-oracledirectory.
    Scorri fino alla fine del file e inserisci quanto segue:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Salva il tuo file ed esci da gedit .
  5. Infine, ricaricare il PERCORSO di sistema con il seguente comando:
    $. /etc/environment

Il metodo sopra ti risparmierà il fastidio di dover eseguire i comandi ogni volta che accedi al tuo computer.


5
Come fa . / etc / environment work?
Sudip Bhandari,

1
L'aggiunta del exportcomando è necessaria in /etc/environment?
pkaramol,

@pkaramol Ho dovuto aggiungere l'esportazione JAVA_HOME il 16.04LTS per caricarlo all'avvio.
adeen-s,

3
@ adeen-s Hai aggiunto exportuna linea /etc/environmente ti è stato d'aiuto? Quel file contiene definizioni di variabili analizzate come =coppie nome-valore delimitate; il suo contenuto non viene eseguito come comandi. (Vedi man pam_env.) Quindi, a meno che tu non stia trattando il file separatamente come se fosse uno script (ad esempio passando /etc/environmenta bash's ./ sourcebuiltin), non mi aspetto che funzioni.
Eliah Kagan,

> Come. / etc / environment work? -. (punto) carica i comandi da un file askubuntu.com/a/232938/189965
Roman Bekkiev,

37

Se non conosci il percorso e hai solo openJDK installato, puoi digitare update-alternatives --config javae dovresti trovare il percorso. Per impostare la variabile è possibile scrivere JAVA_HOME=<PATH>seguito da export JAVA_HOME. Si noti che non c'è spazio quando si dichiara la variabile. Per verificare se la variabile è memorizzata, è sufficiente digitare echo $JAVA_HOMEper verificare.


Sembra che sarebbe statico. Se rimuovo openjdk-7 e installo openjdk-9, JAVA_HOME non indicherà il posto sbagliato? Come può essere reso dinamico?
DavidJ,

3
Da te cambiandolo manualmente. Ancora una volta, TU sei il modo in cui diventa dinamico ....
HDave

Il significato di @HDave è che in alcuni casi potresti voler fare in modo che JAVA_HOME faccia riferimento a una versione java specifica, quindi effettuare l'aggiornamento di JAVA_HOME dinamico potrebbe non essere quello che desideri.
Maciej,

mi piace questa risposta. Ho provato con l'eco e ho visto il mio percorso. Tuttavia, sono confuso perché sto ancora ottenendo la variabile d'ambiente JAVA_HOME non impostata quando eseguo mvn -version
Winnemucca

1
Ho scritto questa risposta quando ero più ignorante. L'impostazione della variabile come descritto influirà solo sulla sessione terminale corrente e non verrà mantenuta. Il modo corretto è di eseguire update-alternatives --install <link> <name> <target> <priority> ad esempio:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.