Wie ersetze ich OpenJDK 6 durch OpenJDK 7?

33

Überraschenderweise verwendet Ubuntu 11.10 (da OpenJDK 7 vor ungefähr 4 Monaten zur allgemeinen Verfügbarkeit freigegeben wurde) immer noch OpenJDK 6 anstelle von 7 als Standard. Wie behebe ich das am besten? Ich würde es vorziehen, OpenJDK 6 vollständig zu entfernen und OpenJDK 7 als Standard-JDK und Standard-JRE zu verwenden.

Ich möchte nicht die offiziellen Oracle-Tarballs, ich möchte Deb-Repos - die übliche Ubuntu-Methode.

Ivan
quelle
Jemand müsste das in ein Debian-Paket einbauen und es in ein PPA auf Launchpad stellen. Wenn dies noch niemand getan hat, können Sie entweder eine .deb-Datei erstellen oder den Teer installieren.
Martin Ueding
Immer noch der Fall mit 12.04
Thorbjørn Ravn Andersen
Jahr 2011 - jetzt Jahr 2012 - wurde dies wirklich gelöst (welches wurde als die Antwort angesehen lol? Wenn nicht i gonna write a nice wiki on thisin meiner Frage / Antwort.
Es ist besser, Ihr System auf LTS zu aktualisieren.
Ketan Patel

Antworten:

28

Das Problem ist, dass das default-jrePaket von OpenJDK 6 abhängt und die Abhängigkeiten der meisten anderen Pakete wie default-jre | openjdk-6-jre | sun-java6-jrefolgt definiert sind : Bis OpenJDK 7 offiziell unterstützt wird und als Standardversion verwendet wird oder bis alle Java-abhängigen Pakete ihre Abhängigkeiten aktualisieren, werden Sie Sie müssen OpenJDK 6 beibehalten und OpenJDK 7 mit als Standard festlegen update-java-alternatives. Beispiel für ein 64-Bit-System:

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

Auf 32-Bit-Systemen unterscheidet sich der Verzeichnisname. Sie können den richtigen Namen mithilfe des -lSchalters finden. Der zweite Befehl kann viele Fehler auslösen. benutze entweder --jreswitch oder ignoriere einfach Fehler - das Skript ändert was es kann und ignoriert einfach den Rest.

Man könnte das default-jrePaket theoretisch so bearbeiten , dass es von OpenJDK 7 abhängt, aber man sollte gewarnt werden, dass dies mehr Schaden als Nutzen verursachen kann.

jnv
quelle
2
Damit dies genau funktioniert, musste ich sicherstellen, dass es für jedes openjdk-6- oder icedtea-6-Paket ein entsprechendes openjdk-7- oder icetea-7-Paket gibt, da andernfalls update-java-alternatives den Wechsel nicht durchführen.
Blair Zajac
2
Nach der Installation des icedtea-7-Plugins ( $ sudo apt-get install icedtea-7-plugin) funktionierte es unter Ubuntu 12.04 einwandfrei . Vielen Dank.
David
10

Dazu müssen Sie beide jdk-Versionen auf Ihrem System installiert haben. Sie können beide mit apt-get herunterladen.

Nach diesem Versuch,

$ sudo update-alternatives --config java

und wählen Sie das gewünschte jdk aus.

Openjdk ist für einige Anwendungen manchmal ungünstig.

Sie sollten auch versuchen, Oracle-Java oder Sun-Java.

Der folgende Link ist für diesen Zweck sehr nützlich:

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html

shivshnkr
quelle
3

OpenJDK 7 ist in den normalen Ubuntu-Repos in 11.10 enthalten. Wenn Sie nach openjdk-7-jre und openjdk-7-jdk suchen und diese mit apt-get / synaptic / software center installieren, sollten Sie openjdk-6 ersetzen, falls dies nicht der Fall ist Sie können die openjdk-6- * -Pakete zuerst mit entfernen apt-get purge openjdk-6-*

Chemicaloliver
quelle
1
openjdk-7- * -Pakete scheinen dazu gedacht zu sein, neben openjdk-6- installiert zu werden . Und wenn ich versuche, openjdk-6- zu entfernen, müssen Tonnen von Paketen als abhängig entfernt werden (obwohl ich weiß, dass einige dieser Anwendungen perfekt mit Java 7 funktionieren).
Ivan
zeigt anscheinend default-jrenoch auf Java 6.
Thorbjørn Ravn Andersen
2

Das Repo finden Sie hier: https://launchpad.net/~openjdk/+archive/ppa

oder:

sudo apt-add-repository ppa:openjdk/ppa
sudo apt-get update
sudo apt-get upgrade

vorausgesetzt, Sie haben OpenJDK installiert

LasseValentini
quelle
1
Es scheint, dass es nicht für den 11.10 gedacht ist.
Ivan