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.


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.


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


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-*


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.