2013-01-02 18 views
36

używam Linux Mint Cinnamon 14. Mam ustawić $JAVA_HOME i $PATH zmienne środowiskowe w ~/.profile następująco:mam ustawić JAVA_HOME i zmienne drogi, ale wciąż java -version pokazuje stary

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

I wtedy zrobił source ~/.profile, aby wprowadzić odpowiednie zmiany.

Po wykonaniu polecenia java -version w celu sprawdzenia aktywnej wersji java, wyświetlana jest domyślna (już zainstalowana open-jdk) wersja Java. Jak mogę przesłonić domyślny open-jdk tym, który pobrałem?

UPDATE:

which java mówi/usr/bin/java

$JAVA_HOME/bin/java -version mówi 'Permission Denied'

sudo $JAVA_HOME/bin/java -version (prosi o hasło, a następnie) mówi polecenia nie znaleziono

ale cd $JAVA_HOME/bin i ls pokazuje, że jest to właściwy katalog.

+5

co mówi 'co java'? – gefei

+6

co mówi '$ JAVA_HOME/bin/java -version'? Podejrzewam, że ta ścieżka nie jest poprawna, więc zostanie zignorowana. –

+0

może być odwrotnością rozszerzenia PATH 'export PATH = $ PATH:/home/aqeel/development/jdk/jdk1.6.0_35/bin' – Subin

Odpowiedz

51

Choć wygląda Twoja konfiguracja jest poprawna, istnieje kilka rzeczy do sprawdzenia:

  1. Wyjście env - konkretnie PATH.
  2. which java mówi co?
  3. Czy istnieje plik java w $JAVA_HOME\bin i czy ma ustawiony bit wykonania? Jeśli nie, to jest to chmod a+x java.

Ufam masz source byłyby swój po dodaniu/zmiana JAVA_HOME i PATH.profile?

Ponadto, można pomóc sobie w przyszłej konserwacji instalacji JDK pisząc

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

zamiast. Następnie wystarczy zaktualizować jedną zmienną env podczas konfiguracji instalacji JDK.

Cheers,

+0

Widzę, żaden plik w katalogu $ JAVA_HOME/bin nie jest oznaczony jako plik wykonywalny. Proszę mi powiedzieć, jakie inne pliki mam oznaczyć jako pliki wykonywalne? (Zobacz też pytanie, które edytowałem) Wielkie dzięki –

+0

Zobacz mój punkt 3 powyżej. 'chmod a + x *' w katalogu 'bin' prawdopodobnie zmyli. Przeczytaj również "man chmod" i coś na temat uprawnień w systemie Unix/Linux. –

+0

OK, po zrobieniu 'chmod a + x *' w katalogu 'bin', otrzymano wynik' $ JAVA_HOME/bin/java' -version, ale 'java -version' jest nadal starym domyślnym. –

4

$ JAVA_HOME/bin/java -version mówi 'Permission Denied'

Jeśli nie można uzyskać dostępu lub kod bieg, który jest ignorowany, jeśli dodany do ścieżki. Musisz go udostępnić i uruchomić lub zdobyć własną kopię.

zrobić

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

zrozumieć, dlaczego nie można uzyskać dostępu lub uruchom ten program ,.

+0

Ooops, To nie zostało oznaczone jako plik wykonywalny (jak @Anders R. Bystrup wskazał w swojej odpowiedzi). Po wykonaniu 'chmod a + x *' w katalogu 'bin', otrzymujemy wynik' $ JAVA_HOME/bin/java' -version, ale 'java -version' jest nadal starym domyślnym. –

+0

spróbuj wywołać 'hash -r', aby powłoka usunęła zapamiętane lokalizacje. –

0

Jest łatwy sposób, po prostu usuń dowiązanie symboliczne z "/ usr/bin". To będzie działać.

2

Szukając java, wygląda od lewej do prawej w pozycjach ścieżek, które są oddzielone: ​​więc musisz dodać ścieżkę do najnowszego katalogu jdk/bin przed/usr/bin, więc gdy przeszuka, znajdzie najnowszą i przestać szukać dalej.

tj. PATH =/usr/java/jdk_1.8/bin:/usr/bin: ..... i tak dalej.

następnie zainicjować profilu użytkownika za pomocą komendy: source ~/.bash_profile

i skontaktować się z: [który java]

dostaniesz właściwy.

10

update-java-alternatywy

java wykonywalny nie został znaleziony z JAVA_HOME, to zależy tylko od PATH.

update-java-alternatives jest dobrym sposobem zarządzania to dla całego systemu jest poprzez:

update-java-alternatives -l 

wyjściowej próbki:

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

Wybierz jedną z alternatyw:

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

Like update-alternatives, działa poprzez zarządzanie dowiązaniami symbolicznymi. Zaletą jest to, że jest zarządza dowiązania do wszystkich narzędzi Java naraz: javac, java, javap itp

Jestem jeszcze zobaczyć JAVA_HOME wpływ na JDK. Do tej pory widziałem go tylko w narzędziach innych firm, e.g. Maven.

+1

Miło działa jak urok ..... :) Naprawdę pomocne naprawdę. –

0

Aktualizowanie ~/.profile lub ~/.bash_profile czasami nie działa. Właśnie usunąłem JDK 6 i source d .bash_profile.

Spróbuj uruchomić to:

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

Następnie zmodyfikować/dodać JAVA_HOME i ścieżkę zmiennych.

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

najprostszych wszystko będzie albo usunąć lub edytować link/usr/bin/java. ma to wywołanie do wykonania java na wspomnianej ścieżce.

0

W Linux Mint 18 Cinnamon należy sprawdzić /etc/profile.d/jdk_home.sh I przemianowany ten plik do jdk_home.sh.old i teraz moja droga nie prowadzi coraz nadpisane i mogę zadzwonić java - Wersja i zobacz Java 9 zgodnie z oczekiwaniami. Mimo że poprawnie wybrałem Javę 9 w update-aternatives --config java, ten plik jdk_home.sh nadal nadpisuje $ PATH podczas uruchamiania.