2013-01-02 12 views
36

Sto usando Linux Mint Cannella 14. Ho impostato le variabili $JAVA_HOME e $PATH ambiente in ~/.profile come segue:Ho impostato JAVA_HOME e PATH variabili ma java -version mostra ancora quello vecchio

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 
export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH 

Ho poi ha fatto source ~/.profile per apportare le modifiche appropriate.

Quando eseguo il comando java -version per verificare la versione java attiva, mostra la versione java predefinita (già installata jdk aperta). Come posso sovrascrivere l'open-jdk predefinito con quello scaricato?

UPDATE:

which java dice/usr/bin/java

$JAVA_HOME/bin/java -version dice 'Autorizzazione negata'

sudo $JAVA_HOME/bin/java -version (chiede la password, quindi) dice Command not found

ma cd $JAVA_HOME/bin e ls indica che è la directory giusta.

+5

cosa dice 'which java' say? – gefei

+6

cosa dice '$ JAVA_HOME/bin/java -version' dire? Sospetto che questo percorso non sia corretto, quindi verrà ignorato. –

+0

potrebbe essere invertire la defenenza PATH 'export PATH = $ PATH:/home/aqeel/development/jdk/jdk1.6.0_35/bin' – Subin

risposta

51

Mentre sembra che la configurazione è corretta, ci sono un paio di cose da verificare:

  1. L'uscita del env - specificamente PATH.
  2. which java ti dice cosa?
  3. C'è un eseguibile java in $JAVA_HOME\bin e lo fa avere il set di bit di esecuzione? Se non lo è chmod a+x java.

ho fiducia che ha source 'd la tua .profile dopo l'aggiunta/modifica del JAVA_HOME e PATH?

Inoltre, ci si può aiutare in futuro la manutenzione della vostra installazione JDK scrivendo

export JAVA_HOME=/home/aqeel/development/jdk/jdk1.6.0_35 
export PATH=$JAVA_HOME/bin:$PATH 

invece. Quindi è necessario aggiornare una variabile env solo quando si installa l'installazione JDK.

Cheers,

+0

Vedo, nessun file nella directory $ JAVA_HOME/bin è contrassegnato come eseguibile. Per favore dimmi quali altri file devo contrassegnare come eseguibili? (Si prega di vedere anche la domanda che ho modificato) Grazie mille –

+0

Vedere il mio proiettile 3 sopra. 'chmod a + x *' nella directory 'bin' probabilmente farà il trucco. Leggi anche 'man chmod' e qualcosa sui permessi su unix/linux in generale. –

+0

Ok, dopo aver eseguito 'chmod a + x *' nella directory 'bin', viene ricevuto il risultato' $ JAVA_HOME/bin/java' -version, ma 'java -version' è ancora il vecchio predefinito. –

4

$ JAVA_HOME/bin/java -version dice 'Autorizzazione negata'

Se non è possibile accedere o il codice periodo, che essere ignorate se aggiunto al tuo percorso. Devi renderlo accessibile e eseguibile o ottenerne una copia.

fare un

ls -ld $JAVA_HOME $JAVA_HOME/bin $JAVA_HOME/bin/java 

capire perché non è possibile accedere o eseguire questo programma ,.

+0

Ooops, non è stato contrassegnato come eseguibile (come sottolineato da @Anders R. Bystrup nella sua risposta). Dopo aver eseguito 'chmod a + x *' nella directory 'bin', viene ricevuto il risultato' $ JAVA_HOME/bin/java' -version, ma 'java -version' è ancora il vecchio predefinito. –

+0

prova a chiamare 'hash -r' per fare in modo che la shell rimuova le posizioni memorizzate. –

0

C'è un modo semplice, basta rimuovere il link simbolico da "/ usr/bin". Funzionerà.

2

Quando cerca java, guarda da sinistra a destra in voci di percorso separate da: quindi è necessario aggiungere il percorso dell'ultima directory jdk/bin prima di/usr/bin, quindi quando lo cerca troverà l'ultimo e smetti di cercare ulteriormente.

, ad esempio PATH =/usr/java/jdk_1.8/bin:/usr/bin: ..... e così via.

poi inizializzare profilo utente usando il comando: source ~/.bash_profile

e controllare con: [che java]

si otterrà il giusto.

10

update-java-alternatives

Il java eseguibile non viene trovato con il vostro JAVA_HOME, dipende solo dalla vostra PATH.

update-java-alternatives è un buon modo per gestirlo per l'intero sistema è attraverso:

update-java-alternatives -l 

Esempio di output:

java-7-oracle 1 /usr/lib/jvm/java-7-oracle 
java-8-oracle 2 /usr/lib/jvm/java-8-oracle 

Scegli una delle alternative:

sudo update-java-alternatives -s java-7-oracle 

Come update-alternatives, funziona tramite la gestione dei collegamenti simbolici. Il vantaggio è che si gestisce link simbolici a tutte le utenze di Java in una sola volta: javac, java, javap, ecc

devo ancora vedere un effetto JAVA_HOME sul JDK. Finora l'ho visto solo negli strumenti di terze parti, e.g. Maven.

+1

Bello funziona come un fascino ..... :) Davvero utile davvero. –

0

L'aggiornamento del ~/.profile o ~/.bash_profile non funziona a volte. Ho appena eliminato JDK 6 e source d .bash_profile.

Provare a eseguire questo:

sudo rm -rd jdk1.6.0_* #it may not let you delete without sudo 

Poi, modificare/aggiungere le variabili JAVA_HOME e PATH.

source ~/.bash_profile #assuming you've updated $JAVA_HOME and $PATH 
-1

il più semplice di tutti sarebbe quello di rimuovere il collegamento o modificare/usr/bin/java. questo ha una chiamata per eseguire java nel percorso indicato.

0

In Linux Mint 18 Cannella assicurati di controllare /etc/profile.d/jdk_home.sh ho rinominato questo file per jdk_home.sh.old e ora il mio percorso non tenere sempre ignorato e posso chiamare java - versione e vedere Java 9 come previsto. Anche se ho selezionato correttamente Java 9 nel file update-aternatives --config java, questo file jdk_home.sh ha mantenuto l'override del $ PATH all'avvio.

Problemi correlati