Wie setze ich die Java-Standardversion?

125

Ich habe alle Anweisungen befolgt, die bei dieser Frage angegeben wurden , stoße jedoch beim letzten Teil auf einige Probleme.

Ich habe tatsächlich Version 6.22 von Java und möchte auf Version 6.30 aktualisieren.

Nach dem Verschieben des extrahierten Verzeichnisses java-6-oraclein /usr/lib/jvmweiß ich nicht, was zu tun ist, da das Skript, auf das in der obigen Antwort hingewiesen wird, von Java 5 auf Java 6 aktualisiert wird.

Der Übersichtlichkeit halber wird hier ausgegeben, wenn ich ein lsin dir mache /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

Was sollte ich jetzt tun?


ADDED PART

Unter dem Vorschlag von @fossfreedom habe ich das Skript trotzdem ausgeführt und tatsächlich die Java-Version aktualisiert.

In der Tat, wenn ich Befehlsausgabe ausführen java -versionwird Folgendes sein:

$ 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)

Es gibt immer noch ein Problem , wenn Irun javac -versionmir die alte Version installiert:

$ javac -version
javac 1.6.0_22

Und wenn ich den Tester unter diesem Link benutze , wird mir mitgeteilt, dass es sich um eine Version handelt

Java Version 1.6.0_22 from Sun Microsystems Inc.

Was läuft falsch?

Es scheint, dass Java Runtime Environment aktualisiert wurde, Java Compiler und Java Plugin für Browser jedoch nicht.

Wie kann ich sie aktualisieren?


SONSTIGES ERGÄNZTES TEIL

sudo update-alternatives --config java gibt folgende Ausgabe zurück

$ 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:

Dies ist sinnvoll, da JRE korrekt auf Version 6.31 aktualisiert wurde und Probleme mit dem Java Compiler und dem Java-Browser-Plugin auftreten.

Irgendwelche Ideen?

Matteo
quelle
@fossfreedom Ich habe es nicht ausprobiert, weil ich dachte, dass es keine gute Idee ist, es explizit für das Hochladen von Java 5 auf 6 zu schreiben, sollte ich es trotzdem tun?
Matteo
1
hmmm - vielleicht bist du verwirrt, dass das webupd8 script 0.5b ist? Dies ist die Version des Skripts - sie bezieht sich nicht auf die Java-Version. Versuche es. Hier sehen Sie einen Screenshot davon, wie das Fenster aussieht, wenn Sie das Skript ausführen.
fossfreedom
@fossfreedom Ja, das hat mich total verwirrt, DI hat das Skript ausgeführt! Überprüfen Sie die Änderungen in Frage! Vielen Dank für Ihre Hilfe ..
Matteo
wie seltsam ... das ist mir noch nie begegnet. Wie auch immer - schauen Sie sich die Antwort unten an - Sie sollten in der Lage sein, sudo update-alternativesdem Beispiel zu entsprechen.
fossfreedom
@fossfreedom erneut aktualisiert Frage!
Matteo

Antworten:

104

Zu deiner ersten Frage:

Möglicherweise sind Sie verwirrend, dass das webupd8-Skript 0.5b ist. Dies ist die Version des Skripts - sie bezieht sich nicht auf die Java-Version.

Weiter zur Einstellung der Javac-Version.

Ich vermute, Sie müssen explizit den Pfad des Javac-Compilers angeben

dh

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

gefolgt von:

sudo update-alternatives --config javac

In Bezug auf die Einrichtung des Java Chrome Plugins.

Die Meisterfrage:

Wie installiere ich Oracle JDK 6?

enthält diese Informationen - da sich Ihre Ordnerstruktur geringfügig unterscheidet, sollte Ihr Link-Befehl wie folgt lauten:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/
fossfreedom
quelle
Allein ändert dies nur den Compiler - siehe die Antwort unten für Update-Java-Alternativen, die das Umschalten aller Java-bezogenen Alternativen handhaben, die 82 auf meinem System sind.
Greg
55

Sieh das ; Lauf

sudo  update-java-alternatives --list

um alle Java-Installationen auf einem Computer nach Name und Verzeichnis aufzulisten und dann auszuführen

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

um auszuwählen, welches JRE / JDK verwendet werden soll.

Wenn Sie für jede Java-Task unterschiedliche JDKs / JREs verwenden möchten, können Sie Update-Alternativen ausführen, um jeweils eine ausführbare Java-Datei zu konfigurieren. Du kannst rennen

sudo  update-alternatives --config java[Tab]

um zu sehen, welche Java-Befehle konfiguriert werden können (Java, Javac, Javah, Javaws usw.). Und dann

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

ordnet diese Java-Task / diesen Java-Befehl einem bestimmten JDK / JRE zu.

Möglicherweise müssen Sie auch JAVA_HOME für einige Anwendungen festlegen: Aus dieser Antwort können Sie verwenden

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

für JREs oder

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

für JDKs.

Werde sehen
quelle
25

Ich denke, Sie sollten sich den update-java-alternativesBefehl aus dem java-commonPaket und die *.jinfovon ihm verwendeten Dateien ansehen . Damit sollten Sie in der Lage sein, vollständig zwischen Java-Installationen zu wechseln (unabhängig von JDK, JRE, ...).

Johannes Wachter
quelle
2
Ich habe das ausprobiert update-java-alternativesund war dann java -versionkorrekt, aber der Link in $JAVA_HOMEwar immer noch falsch ... Ich habe diesen manuell geändert, aber ich frage mich, ob update-java-alternativesin dieser Hinsicht etwas fehlt .
Alexis Wilke
7

Unter Ubuntu / Linux können Sie die Java-Version mit wechseln

update-alternatives --config java

Aber vorher musst du die Version installieren.

Mit diesem Skript (./install-java.sh) können Sie mehrere JVMs installieren

#!/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"

Legen Sie dieses Skript in den Ordner, in den die JVM (s) entpackt wurden, und führen Sie Folgendes aus:

/opt/install-java.sh

Nächste Verwendung:

update-alternatives --config java
Ricardo Jl Rufino
quelle
1

Wenn Sie manuell Alternativen für javac javaws javadoc oder andere Java-bezogene Befehle festlegen möchten, möchten Sie diese möglicherweise zu Sklaven der Java-Alternative machen.

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 - Auto-Modus Link Beste Version ist /opt/jdk1.8.0_74/bin/java Link verweist derzeit auf /opt/jdk1.8.0_74/bin/java Link Java ist / usr / bin / java Slave Javadoc ist / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - Slave-Javadoc mit Priorität 0: /opt/jdk1.8.0_74/bin/javadoc

Ändern Sie /opt/jdk1.8.0_74/ in das Verzeichnis, in dem Ihr JDK installiert ist.

Thiago
quelle
0

Öffnen Sie /etc/environmentin einem beliebigen Texteditor die folgende Zeile:

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

- Java-Pfad kann unterschiedlich sein.
Verwenden Sie source, um die Variablen zu laden, indem Sie diesen Befehl ausführen:

source /etc/environment

Überprüfen Sie dann die Variable, indem Sie diesen Befehl ausführen:

echo $JAVA_HOME

Führen Sie mit diesem Pfad den folgenden Befehl aus:

sudo  update-java-alternatives --list

Wählen Sie Ihre Standard Java Version.

Mwongera808
quelle