Jak ustawić JAVA_HOME dla Java?

303

Zainstalowałem wersję Java. Jak możemy $JAVA_HOMEpoprawnie ustawić zmienną środowiskową?

Gaurav Agarwal
źródło

Odpowiedzi:

422

Można ustawić JAVA_HOMEin /etc/profilejako Petronilla Escarabajo sugeruje. Jednak preferowaną lokalizacją JAVA_HOMElub dowolną zmienną systemową jest /etc/environment.

Otwórz /etc/environmentw dowolnym edytorze tekstu, takim jak nanolub, gediti dodaj następujący wiersz:

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

(ścieżka Java może być inna)

Użyj, sourceaby załadować zmienne, uruchamiając następujące polecenie:

source /etc/environment

Następnie sprawdź zmienną, uruchamiając następujące polecenie:

echo $JAVA_HOME

Aktualizacja

Zwykle większość systemów linuksowych domyślnie korzysta z / etc / environment. Jeśli twój system tego nie robi, dodaj następujący wiersz do ~/.bashrc(Thanks @pje)

source /etc/environment
Manula Waidyanatha
źródło
2
Kiedy próbowałem uruchomić Android Studio (który ma IntelliJ IDEA jako bazę), miałem komunikat o błędzie bardzo podobny do @ advocate's: „'tools.jar' wydaje się nie być w ścieżce klas Android Studio.” Po tym, jak bezskutecznie bawiłem się JAVA_HOME, postanowiłem rzucić okiem na studio.sh, skrypt powłoki, który uruchamia Android Studio. Jak zwykle zgaduję, ustawiłem JDK_HOME na tę samą wartość, jakiej oczekiwano dla JAVA_HOME i voila! Zainstalowano bez wielkich problemów.
Hilton Fernandes,
3
Dla osób tworzących oprogramowanie, nie umieszczaj JAVA_HOME w / etc / environment, chyba że chcesz zrestartować komputer za każdym razem, gdy zmieniasz wersje JDK.
HDave
2
Jest to rozwiązanie tymczasowe, jak zauważyli inni. Nikt nie chciałby uruchamiać źródła za każdym razem, gdy ponownie uruchamiają bash.
yuranos87
6
Jak zauważyli inni, nie utrzymuje się to między sesjami terminalowymi. To, co zrobiłem, aby rozwiązać ten problem, polega właśnie na dodaniu wiersza source /etc/environmentna górze mojego pliku konfiguracyjnego bash, ~/.bashrcaby ładował wszystkie ustawienia środowiska podczas uruchamiania. Do tej pory pracuję dla mnie.
pje
2
@sedulam Zaktualizowałem odpowiedź
Manula Waidyanatha,
79

Aby ustawić JAVA_HOMEzmienną środowiskową, wykonaj następujące czynności:

  1. Uruchom terminal, naciskając Ctrl+ Alt+ Tna klawiaturze.
  2. Wpisz następujące polecenie:
    $gksudo gedit /etc/environment
  3. W zależności od tego, gdzie zainstalowałeś Javę, musisz podać pełną ścieżkę. W tym przykładzie zainstalowałem Oracle JDK 7 w /usr/lib/jvm/java-7-oraclekatalogu.
    Przewiń do końca pliku i wprowadź następujące dane:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Zapisz plik i zamknij gedit .
  5. Na koniec ponownie załaduj PATH systemowy za pomocą następującego polecenia:
    $. /etc/environment

Powyższa metoda pozwoli Ci uniknąć kłopotów z uruchamianiem poleceń przy każdym logowaniu do komputera.

Petronilla Escarabajo
źródło
5
Jak . / etc / środowisko pracy?
Sudip Bhandari,
1
Czy konieczne jest dodanie exportpolecenia w /etc/environment?
pkaramol
@pkaramol Musiałem dodać eksport JAVA_HOME 16.04LTS, aby załadować go podczas uruchamiania.
adeen-s
3
@ adeen-s Dodałeś exportdo linii /etc/environmenti pomógł? Ten plik zawiera definicje zmiennych parsowane jako =-delimitowane pary nazwa-wartość; jego zawartość nie jest wykonywana jako polecenia. (Zobacz man pam_env.) Więc jeśli nie traktujesz pliku osobno, jakby to był skrypt (na przykład poprzez przekazanie /etc/environmentdo bash ./ sourcewbudowanego), nie spodziewałbym się, że to zadziała.
Eliah Kagan
> Jak to działa. / etc / środowisko pracy? -. (kropka) ładuje polecenia z pliku askubuntu.com/a/232938/189965
Roman Bekkiev
37

Jeśli nie znasz ścieżki i masz zainstalowany tylko openJDK, możesz wpisać update-alternatives --config javai powinieneś znaleźć ścieżkę. Aby ustawić zmienną, możesz wpisać, JAVA_HOME=<PATH>a następnie export JAVA_HOME. Zauważ, że nie ma spacji podczas deklarowania zmiennej. Aby sprawdzić, czy zmienna jest zapisana, wystarczy wpisać w echo $JAVA_HOMEcelu weryfikacji.

Erro
źródło
To wydaje się być statyczne. Jeśli usunę openjdk-7 i zainstaluję openjdk-9, to czy JAVA_HOME nie wskaże niewłaściwego miejsca? Jak można to uczynić dynamicznym?
DavidJ
3
Przez ręczną zmianę. Po raz kolejny to Ty stajesz się dynamiczny ...
HDave
@HDave oznacza, że ​​w niektórych przypadkach możesz chcieć, aby JAVA_HOME wskazywał na określoną wersję Java, więc aktualizacja dynamiki JAVA_HOME może nie być tym, czego potrzebujesz.
Maciej
podoba mi się ta odpowiedź. Testowałem za pomocą echa i widzę swoją ścieżkę. Jestem jednak zdezorientowany, dlaczego wciąż otrzymuję zmienną środowiskową JAVA_HOME nie jest ustawiona po uruchomieniu mvn -version
Winnemucca
1
Odpisałem tę odpowiedź, kiedy byłem bardziej nieświadomy. Ustawienie zmiennej zgodnie z opisem wpłynie tylko na bieżącą sesję terminala i nie zostanie utrwalone. Prawidłowym sposobem jest uruchomienie update-alternatives --install <link> <name> <target> <priority> na przykład:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro