Gibt es eine Möglichkeit, alle Java-bezogenen Alternativen mit schnell umzuschalten update-alternatives
?
Wenn Sie beispielsweise Java auf 7 umstellen möchten, führen sudo update-alternatives --config java
Sie Java 7 OpenJdk aus und wählen Sie es aus. Aber wenn ich renne, update-alternatives --get-selections | grep java
bekomme ich Folgendes:
appletviewer auto /usr/lib/jvm/java-6-openjdk-amd64/bin/appletviewer
extcheck auto /usr/lib/jvm/java-6-openjdk-amd64/bin/extcheck
idlj auto /usr/lib/jvm/java-6-openjdk-amd64/bin/idlj
itweb-settings auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/itweb-settings
jar auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
jarsigner auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
java manual /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
javac auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javac
javadoc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javadoc
javah auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javah
javap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javap
javaws auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/javaws
jconsole auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jconsole
jdb auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jdb
jexec auto /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jexec
jhat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jhat
jinfo auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jinfo
jmap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jmap
jps auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jps
jrunscript auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jrunscript
jsadebugd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jsadebugd
jstack auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstack
jstat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstat
jstatd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstatd
keytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/keytool
native2ascii auto /usr/lib/jvm/java-6-openjdk-amd64/bin/native2ascii
orbd auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/orbd
pack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/pack200
policytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/policytool
rmic auto /usr/lib/jvm/java-6-openjdk-amd64/bin/rmic
rmid auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmid
rmiregistry auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmiregistry
schemagen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen
serialver auto /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver
servertool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/servertool
tnameserv auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/tnameserv
unpack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/unpack200
wsgen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen
wsimport auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport
xjc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc
Wie Sie sehen, wurde meine Java-Alternative auf 7 umgestellt, aber jede andere auf OpenJDK 6 basierende Alternative wurde nicht umgestellt. Natürlich könnte ich jede manuell wechseln oder ein Skript schreiben, aber ich gehe davon aus, dass es einen besseren Weg gibt, dies zu erreichen.
quelle
update-java-alternatives
Ändert alle anderen Java-Alternativen, auch wenn die Plugin-Einstellung einen Fehler auslöst.update-java-alternatives --set java-1.8.0-openjdk-amd64
ich nochdefault-java -> /usr/lib/jvm/java-7-oracle
. Liegt das amno alternatives for mozilla-javaplugin.so
Fehler? Wie kann ich das auch ändern?jbro stellte dieselbe Frage unter http://ubuntuforums.org/showthread.php?t=1817528 und schrieb ein Skript für dieses Problem.
Wenn es keine bessere Antwort gibt, scheint dies eine solide Lösung zu sein, aber ich gehe davon aus, dass es eine bessere Möglichkeit geben muss,
update-alternatives
damit umzugehen.Ich habe den Code ein wenig bearbeitet, da Sie die Änderungen vor der Installation nicht vornehmen können. Ich habe zwei weitere Zeilen wie folgt hinzugefügt ...
quelle
Führen Sie für Oracle JVM Folgendes aus:
quelle
<TL; DR> update-java-alternatives verwendet die .jinfo-Datei, um zu bestimmen, welche Alternativen umgeschaltet werden sollen, erwartet jedoch auch, dass sie separat konfiguriert wurden.
Erstellen Sie eine neue .jinfo-Datei und aktualisieren Sie alternative Einträge, wenn Ihre heruntergeladene JRE / JDK nicht mit update-java-alternatives umschaltet
[Einzelheiten]
So konfigurieren Sie es manuell:
Dekomprimieren Sie Ihr neues JDK neben dem vorhandenen JDK in
/usr/lib/jvm/
Generieren Sie eine .jdkname.jinfo- Datei, indem Sie eine andere .jinfo-Datei im Ordner duplizieren (oder holen Sie sich eine von einer anderen Ubuntu-Installation: Sie sind wie alles andere hinter der Vorlage her).
Der Dateiname. jdkname .jinfo muss mit dem jdk-Ordnernamen übereinstimmen.
Ändern Sie den Inhalt, um den Header (Namen) und die Dateipfade (Programmeinträge) entsprechend Ihrer neuen Installation festzulegen.
Entfernen Sie alle Zeilen, die sich auf Programme beziehen, die in Ihrer Version ausgelassen wurden, und fügen Sie Zeilen für neue Programme hinzu
/bin
Generieren Sie mit dieser Vorlage Alternativen für alle Programme, die jetzt in Ihrem .jinfo-Paket enthalten sind:
(Mehrere verwandte Antworten haben dies aus dem Inhalt von / bin heraus skriptiert, oder Sie können eine reguläre Suche / Ersetzung für Ihre .jinfo-Datei durchführen, um die Skriptbefehle zu generieren.)
Beachten Sie, dass 100 nur die Priorität ist, die beim Festlegen der JDK-Version mithilfe des Auto-Flags berücksichtigt wird.
Überprüfen Sie die Java-Alternativen und wechseln Sie zur Verwendung des JDK.
Beachten Sie, dass einige JDKs die JRE nicht enthalten. Fügen Sie sie daher hinzu, oder entfernen Sie diese jinfo-Einträge.
quelle