Jak ustawić Javę Oracle jako domyślną Javę w Ubuntu?

134

Jak zmienić wartość JAVA_HOMEw Ubuntu, aby wskazywała na Java Oracle?

Czy powinien wskazywać na java-6-sunczy java-6-sun-1.6.0.24?

Ashish Agarwal
źródło

Odpowiedzi:

175

Ustawiłem linię:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

w moim ~/.bashrcpliku.

/usr/lib/jvm/java7-oraclepowinno być wskazującym dowiązaniem symbolicznym /usr/lib/jvm/java-7-oracle-[version number here].

Powodem, dla którego jest to dowiązanie symboliczne, jest to, że w przypadku nowej wersji maszyny JVM nie musisz aktualizować .bashrcpliku, powinien on automatycznie wskazywać nową wersję.

Jeśli chcesz ustawić JAVA_HOMEzmienne środowiskowe globalnie i na poziomie systemu, oznacza to, że ich użycie powinno być ustawione w /etc/environmentpliku.

srkiNZ84
źródło
4
Lub /usr/lib/jvm/java-1.6.0-openjdk-amd64, jeśli używasz OpenJDK zamiast Oracle (Sun) JDK.
pm_labs
7
Możesz użyć eksportu JAVA_HOME = / usr / lib / jvm / default-java /
noomz
@noomz Jak to osiągnąć, jeśli default-java nie istnieje?
AHungerArtist
@AHungerArtist Otrzymasz to, jeśli zainstalujesz openjdk lub inne oficjalnie obsługiwane pakiety Ubuntu. Niestety, nie jest to obsługiwane przez Oracle JDK przy użyciu webupd8 / java ppa. W rzeczywistości nie jest dla mnie jasne, co oracle-java7-set-defaultrobi pakiet.
Melvyn
Gdzie w aktach to umieściłeś?
Czipperz
166

Jeśli chcesz to zmienić globalnie i na poziomie systemu;

W

/etc/environment

dodaj tę linię:

JAVA_HOME=/usr/lib/jvm/java-7-oracle
metdos
źródło
27
+1 To jest zalecany sposób help.ubuntu.com/community/EnvironmentVariables
daniel kullmann
@metdos powyższa odpowiedź nie jest globalna lub na poziomie systemu?
Android Killer
1
@AndroidKiller Czy sprawdziłeś link, który wskazał Daniel Kullmann?
metdos
@metdos Działa dobrze, ale odwoływanie się do zmiennych nie działa dla mnie ... $JAVA_HOMEnie rozwiązuje się, gdy jest używane w ten sposób PATH=$JAVA_HOME/bin, próbowałem zrestartować, bez efektu. Czy muszę exportalbo set JAVA_HOMEteż w tym pliku lub moim profilu?
rafian
@Raffian Nie jestem pewien co do różnych przypadków narożnych, w ten sposób działało idealnie dla mnie, aby uzyskać więcej informacji, polecam przeczytać help.ubuntu.com/community/EnvironmentVariables
metdos
53

aby ustawić Oracle Java SE Development Kit jako domyślną systemową Javę, po prostu pobierz najnowszą wersję Java SE Development Kit stąd, a następnie utwórz katalog w dowolnym miejscu w systemie plików, na przykład /usr/javateraz wypakuj pliki, które właśnie pobrałeś w tym katalogu:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

teraz ustawić JAVA_HOMEzmienną środowiskową:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

upewnij się, że java Oracle jest ustawiona jako domyślna java przez:

$ update-alternatives --config java

dostajesz coś takiego:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

Press enter to keep the current choice[*], or type selection number:

zwróć uwagę na gwiazdkę przed cyframi po lewej stronie, a jeśli poprawna nie jest ustawiona, wybierz właściwą, wpisując jej numer i naciskając klawisz Enter. teraz przetestuj swoją Javę:

$ java -version

jeśli otrzymasz coś takiego, jak poniżej, możesz iść:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

pamiętaj również, że możesz potrzebować uprawnień roota lub być w grupie sudoers, aby to zrobić. Przetestowałem to rozwiązanie zarówno na Ubuntu 12.04, jak i Debianie wheezy i działa na obu.

Barracuda
źródło
1
tak, to rozwiązanie jest o wiele czystsze niż przyjęte.
simone cittadini
@JayminGajjar komentarze wyrażające wdzięczność nie są konieczne. Mechanizm wspierania dobrych pytań / odpowiedzi na tej stronie polega na ich głosowaniu. Jeśli nie masz wystarczającej reputacji, aby to zrobić, ale masz wystarczająco dużo komentarzy, spróbuj dołączyć do niego przydatne informacje, takie jak na temat tego, jaki system i jaki system operacyjny przetestowałeś, i przekonaj się, że to rozwiązanie działa itp.
Barracuda
@Barracuda I już głosowałem w górę, masz rację co do informacji, działało dla mnie na 64-bitowym systemie operacyjnym Ubuntu 16.10 :)
Jaymin Gajjar
20

Jeśli chcesz, aby ta zmienna środowiskowa była dostępna dla wszystkich użytkowników i przy starcie systemu, możesz dodać następujące elementy do /etc/profile.d/java.sh (utwórz ją, jeśli to konieczne):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Następnie w trybie terminala:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Moje drugie pytanie brzmi - czy powinno wskazywać na java-6-sun czy java-6-sun-1.6.0.24?

Powinien zawsze wskazywać na java-7-oracleodnośniki symboliczne do ostatnio zainstalowanego (zakładając, że zainstalowałeś Javę z repozytoriów Ubuntu, a teraz z pliku do pobrania dostępnego na oracle.com).

Jits
źródło
12

java 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

lub java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

Roman Rhrn Nesterov
źródło
10

Jeśli zajmujesz się programowaniem, musisz wskazać JDK (Java Development Kit). W przeciwnym razie możesz wskazać środowisko JRE (Java Runtime Environment).

JDK zawiera wszystko, co ma JRE, a także więcej. Jeśli wykonujesz tylko programy w języku Java, możesz wskazać środowisko JRE lub JDK.

Należy ustawić JAVA_HOME na podstawie aktualnie używanej Javy. readlinkwypisze wartość dowiązania symbolicznego dla aktualnej Javy i seddostosuje ją do katalogu JRE:

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

Jeśli chcesz ustawić JAVA_HOME na JDK, powinieneś przejść w górę o jeden folder więcej:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
user987339
źródło
7

Jeśli chcesz używać określonej wersji Java, gdy zainstalowanych jest wiele zestawów JDK, samo ustawienie JAVA_HOME może nie działać.

Musisz użyć, sudo update-alternatives --config javaaby ustawić domyślną Javę.

Zobacz /ubuntu/121654/how-to-set-default-java-version .

prosseek
źródło
5

Zobacz to ; biegać

sudo  update-java-alternatives --list

aby wyświetlić listę wszystkich instalacji Java na komputerze według nazwy i katalogu, a następnie uruchom

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

aby wybrać, którego JRE / JDK użyć.

Jeśli chcesz używać różnych JDK / JRE dla każdego zadania Java, możesz uruchomić alternatywne aktualizacje, aby skonfigurować jeden plik wykonywalny Java na raz; możesz biec

sudo  update-alternatives --config java[Tab]

aby zobaczyć polecenia Java, które można skonfigurować (java, javac, javah, javaws itp.). I wtedy

sudo  update-alternatives --config [javac|java|javadoc|etc.]

skojarzy to zadanie / polecenie Java z określonym pakietem JDK / JRE.

Może być również konieczne ustawienie JAVA_HOME dla niektórych aplikacji: z tej odpowiedzi możesz użyć

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

dla środowiska JRE lub

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

dla JDK.

WillC
źródło
Inne podejście:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg