Jak zastąpić OpenJDK 6 OpenJDK 7?

33

Zaskakujące (ponieważ OpenJDK 7 został wydany do powszechnej dostępności około 4 miesiące temu) Ubuntu 11.10 nadal domyślnie używa OpenJDK 6 zamiast 7. Jak najlepiej to naprawić? Wolałbym całkowicie usunąć OpenJDK 6 i pozwolić OpenJDK 7 na domyślny-jdk i domyślny-jre.

Nie chcę oficjalnych archiwów Oracle, chcę repozytorium deb - standardowy sposób Ubuntu.

Ivan
źródło
Ktoś musiałby to wbudować w pakiet Debiana i umieścić w PPA na Launchpad. Jeśli nikt tego jeszcze nie zrobił, możesz zrobić .deb lub zainstalować tar.
Martin Ueding,
Nadal sprawa z 12.04
Thorbjørn Ravn Andersen
Rok 2011 - teraz Rok 2012 - czy to naprawdę zostało rozwiązane (który z nich uznano za odpowiedź lol? Jeśli nie i gonna write a nice wiki on thisw moim pytaniu / odpowiedzi.
Lepiej zaktualizuj system do LTS.
Ketan Patel

Odpowiedzi:

28

Problem polega na tym, że default-jrepakiet zależy od OpenJDK 6, a większość innych pakietów ma zdefiniowane zależności jako default-jre | openjdk-6-jre | sun-java6-jre- tak więc dopóki OpenJDK 7 nie zostanie oficjalnie obsługiwany i będzie używany jako wersja domyślna, lub dopóki wszystkie pakiety zależne od Javy nie zaktualizują swoich zależności, będziesz muszę zachować OpenJDK 6 i ustawić OpenJDK 7 jako domyślny za pomocą update-java-alternatives. Przykład dla systemu 64-bitowego:

$ 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

W systemie 32-bitowym nazwa katalogu będzie się różnić, możesz znaleźć właściwą nazwę za pomocą -lprzełącznika. Drugie polecenie może wypluć wiele błędów; użyj --jreprzełącznika lub po prostu zignoruj ​​błędy - skrypt zmienia to, co może, i ignoruje resztę.

Można teoretycznie edytować default-jrepakiet w zależności od OpenJDK 7, ale ostrzegamy, że może to spowodować więcej szkody niż pożytku.

jnv
źródło
2
Aby to działało dokładnie, musiałem upewnić się, że dla każdego pakietu openjdk-6 lub icedtea-6 był odpowiedni pakiet openjdk-7 lub icetea-7, w przeciwnym razie update-java-alternatives nie wykona przełączenia.
Blair Zajac
2
Po zainstalowaniu icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin) działał dobrze na Ubuntu 12.04. Dzięki.
David
10

W tym celu musisz mieć obie wersje jdk zainstalowane w systemie. możesz użyć apt-get, aby pobrać oba.

Po tej próbie

$ sudo update-alternatives --config java

i wybierz jdk, którego chcesz użyć.

Openjdk jest czasem niekorzystny dla niektórych aplikacji.

Powinieneś także wypróbować oracle-java lub sun-java.

Poniższy link jest bardzo przydatny w tym celu:

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

shivshnkr
źródło
3

OpenJDK 7 znajduje się w normalnym repozytorium Ubuntu w 11.10, jeśli szukasz openjdk-7-jre i openjdk-7-jdk i instalujesz je za pomocą apt-get / synaptic / software center, powinny one zastąpić openjdk-6, jeśli nie możesz najpierw usunąć pakiety openjdk-6- * apt-get purge openjdk-6-*

środek chemiczny
źródło
1
Wydaje się, że pakiety openjdk-7- * powinny być instalowane równolegle z openjdk-6- . A jeśli spróbuję usunąć openjdk-6- , istnieje mnóstwo pakietów, które należy usunąć jako zależne (pomimo tego, że wiem, że niektóre z tych aplikacji działają doskonale z Javą 7).
Ivan
najwyraźniej default-jrenadal wskazuje na Javę 6.
Thorbjørn Ravn Andersen
2

Repozytorium można znaleźć tutaj: https://launchpad.net/~openjdk/+archive/ppa

lub:

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

zakładając, że masz zainstalowany OpenJDK

LasseValentini
źródło
1
Wygląda na to, że nie jest przeznaczony do 11.10.
Ivan