Jak ustawić domyślną wersję Java?

123

Postępowałem zgodnie ze wszystkimi instrukcjami zawartymi w tym pytaniu , ale mam problemy z ostatnią jego częścią.

Mam faktycznie wersję 6.22 java i chciałbym zaktualizować ją do wersji 6.30.

Więc po przeniesieniu wyodrębnionego katalogu java-6-oracledo /usr/lib/jvmnie wiem, co robić, ponieważ skrypt wskazany w powyższej odpowiedzi aktualizuje java 5 do java 6.

Dla jasności tutaj jest wyjście, jeśli zrobię lsw reż /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

Co mam teraz zrobić?


DODANA CZĘŚĆ

Pod sugestią @fossfreedom i tak uruchomiłem skrypt i faktycznie zaktualizowałem wersję Java.

W rzeczywistości po uruchomieniu polecenia java -versionwynik będzie następujący:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

Jest jeszcze problem , jeśli Irun javac -versiondaje mi starą wersję zainstalowanego:

$ javac -version
javac 1.6.0_22

A jeśli użyję testera pod tym linkiem , powie mi, że jest to wersja

Java Version 1.6.0_22 from Sun Microsystems Inc.

Co jest nie tak?

Wygląda na to, że Java Runtime Environment zostało zaktualizowane, ale Java Compiler i wtyczka Java do przeglądarki nie.

Jak mogę je zaktualizować?


INNA DODANA CZĘŚĆ

sudo update-alternatives --config java zwróci następujące dane wyjściowe

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

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

ma to sens, ponieważ środowisko JRE zostało poprawnie zaktualizowane do wersji 6.31, problemy dotyczą kompilatora Java i wtyczki przeglądarki Java.

Jakieś pomysły?

Matteo
źródło
@fossfreedom Nie próbowałem tego, ponieważ myślałem, że nie jest dobrym pomysłem, ponieważ jest to wyraźnie napisane do przesyłania z Java 5 do 6, czy powinienem w ogóle?
Matteo,
1
hmmm - być może mylisz się, że skrypt webupd8 to 0.5b? To jest wersja skryptu - nie odnosi się do wersji Java. Spróbuj. Pozwala zobaczyć zrzut ekranu pokazujący okno po uruchomieniu skryptu.
fossfreedom
@fossfreedom tak, co mnie całkowicie zdezorientowało; DI uruchomiłem skrypt! sprawdź wprowadzone zmiany! bardzo dziękuje za pomoc ..
Matteo,
jak bardzo dziwnie ... nigdy tego nie spotkałem. W każdym razie - spójrz na odpowiedź poniżej - powinieneś być w stanie sudo update-alternativesjak na przykładzie.
fossfreedom
@fossfreedom zaktualizowane ponownie pytanie!
Matteo,

Odpowiedzi:

103

Re twoje pierwsze pytanie:

być może mylisz się, że skrypt webupd8 to 0.5b. To jest wersja skryptu - nie odnosi się do wersji Java.

Dalej do ustawienia wersji javac.

Podejrzewam, że musisz jawnie podać ścieżkę kompilatora javac

to znaczy

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

śledzony przez:

sudo update-alternatives --config javac

W odniesieniu do konfiguracji wtyczki Java Java.

Główne pytanie:

Jak zainstalować Oracle JDK 6?

zawiera te informacje - ponieważ struktura folderów jest nieco inna, polecenie łączenia powinno wyglądać następująco:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/
fossfreedom
źródło
Samo to po prostu zmienia kompilator - patrz odpowiedź poniżej dla update-java-alternatives, które obsługuje przełączanie wszystkich alternatyw związanych z java, czyli 82 w moim systemie.
Greg
55

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 uruchomić

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

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

Jeśli chcesz używać różnych JDK / JRE dla każdego zadania Java, możesz uruchomić alternatywy aktualizacji, aby skonfigurować jeden plik wykonywalny Java jednocześnie; możesz biegać

sudo  update-alternatives --config java[Tab]

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

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

powiąże to zadanie / komendę Java z określonym JDK / JRE.

Może być także konieczne ustawienie JAVA_HOME dla niektórych aplikacji: z tej odpowiedzi możesz skorzystać

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

dla JRE lub

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

dla JDK.

WillC
źródło
25

Myślę, że powinieneś rzucić okiem na update-java-alternativespolecenie z java-commonpakietu i *.jinfopliki przez niego używane. Dzięki temu powinieneś być w stanie całkowicie przełączać się między instalacjami Java (niezależnie od JDK, JRE, ...).

Johannes Wachter
źródło
2
Próbowałem, update-java-alternativesa potem java -versionbyło poprawne, ale link w $JAVA_HOMEdalszym ciągu był nieprawidłowy ... Zmieniłem to ręcznie, ale zastanawiam się, czy czegoś brakuje update-java-alternativesw tym zakresie.
Alexis Wilke
6

W Ubuntu / Linux można zmienić wersję Java za pomocą

update-alternatives --config java

Ale wcześniej musisz zainstalować wersję.

Za pomocą tego skryptu (./install-java.sh) można zainstalować wiele maszyn JVM

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

Umieść ten skrypt w folderze, w którym rozpakowałem maszyny JVM, i uruchom:

/opt/install-java.sh

Następne użycie:

update-alternatives --config java
Ricardo Jl Rufino
źródło
1

Jeśli zamierzasz ręcznie ustawić alternatywy dla javac javaws javadoc lub innych poleceń związanych z java, możesz chcieć uczynić z nich niewolników java.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - najlepsza wersja linku trybu automatycznego to /opt/jdk1.8.0_74/bin/java link obecnie wskazuje na /opt/jdk1.8.0_74/bin/java link java to / usr / bin / java slave javadoc to / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - javadoc slave o priorytecie 0: /opt/jdk1.8.0_74/bin/javadoc

Zmień /opt/jdk1.8.0_74/ za pomocą katalogu, w którym jest zainstalowany jdk.

Thiago
źródło
0

Otwórz /etc/environmentw dowolnym edytorze tekstu i dodaj następujący wiersz:

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

- Ścieżka Java może być inna.
Użyj źródła, aby 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

Po ustawieniu tej ścieżki uruchom następujące polecenie:

sudo  update-java-alternatives --list

Wybierz domyślną wersję Java.

Mwongera808
źródło