Come sostituire OpenJDK 6 con OpenJDK 7?


33

Sorprendentemente (dato che OpenJDK 7 è stato rilasciato a disponibilità generale circa 4 mesi fa) Ubuntu 11.10 utilizza ancora OpenJDK 6 invece di 7 per impostazione predefinita. Come posso risolvere al meglio questo? Preferirei rimuovere completamente OpenJDK 6 e lasciare che OpenJDK 7 sia default-jdk e default-jre.

Non voglio i tarball Oracle ufficiali, voglio i repository deb - il modo standard di Ubuntu.


Qualcuno dovrebbe incorporarlo in un pacchetto Debian e inserirlo in un PPA su Launchpad. Se nessuno lo ha ancora fatto, puoi creare un .deb o installare il tar.
Martin Ueding,

Ancora il caso del 12.04
Thorbjørn Ravn Andersen,

Anno 2011 - Ora anno 2012 - questo è stato davvero risolto (quale era considerato la risposta lol? Se non i gonna write a nice wiki on thisnella mia domanda / risposta.

Sarà meglio aggiornare il sistema a LTS.
Ketan Patel,

Risposte:


28

Il problema è che il default-jrepacchetto dipende da OpenJDK 6 e la maggior parte degli altri pacchetti ha le loro dipendenze definite come default-jre | openjdk-6-jre | sun-java6-jre- quindi fino a quando OpenJDK 7 non sarà ufficialmente supportato e verrà utilizzato come versione predefinita, o fino a quando tutti i pacchetti dipendenti da Java aggiornano le proprie dipendenze, devi mantenere OpenJDK 6 e impostare OpenJDK 7 come predefinito usando update-java-alternatives. Esempio per sistema a 64 bit:

$ 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

Su un sistema a 32 bit il nome della directory sarà diverso, puoi trovare il nome giusto usando l' -linterruttore. Il secondo comando può sputare molti errori; utilizzare --jreswitch o semplicemente ignorare gli errori: lo script cambia ciò che può e ignora il resto.

Si potrebbe teoricamente modificare il default-jrepacchetto in modo che dipenda da OpenJDK 7, ma si deve avvertire che ciò può causare più danni che benefici.


2
Per far sì che funzioni esattamente, dovevo assicurarmi che per ogni pacchetto openjdk-6 o icedtea-6 esistesse un corrispondente pacchetto openjdk-7 o icetea-7, altrimenti update-java-alternatives non riuscirà a cambiare.
Blair Zajac,

2
Dopo aver installato il plugin icedtea-7 ( $ sudo apt-get install icedtea-7-plugin) ha funzionato bene su Ubuntu 12.04. Grazie.
David,

10

Per questo, devi avere entrambe le versioni di jdk installate sul tuo sistema. puoi usare apt-get per scaricare entrambi.

Dopo questo tentativo,

$ sudo update-alternatives --config java

e seleziona il jdk che desideri utilizzare.

Openjdk a volte è sfavorevole, per alcune applicazioni.

Dovresti anche provare per Oracle-Java o Sun-Java.

Il link seguente è molto utile per questo scopo:

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


3

OpenJDK 7 è nei normali repository ubuntu in 11.10, se cerchi openjdk-7-jre e openjdk-7-jdk e li installi usando apt-get / synaptic / software center, dovrebbero sostituire openjdk-6, se non lo fa è possibile rimuovere prima i pacchetti openjdk-6- * utilizzando apt-get purge openjdk-6-*


1
I pacchetti openjdk-7- * sembrano pensati per essere installati fianco a fianco con openjdk-6- . E se provo a rimuovere openjdk-6- , ci sono tonnellate di pacchetti da rimuovere come dipendenti (nonostante io sappia che alcune di queste applicazioni funzionano perfettamente con Java 7).
Ivan,

apparentemente default-jreindica ancora Java 6.
Thorbjørn Ravn Andersen,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.