Как заменить OpenJDK 6 на OpenJDK 7?


33

Удивительно (так как OpenJDK 7 был выпущен для общего доступа около 4 месяцев назад) Ubuntu 11.10 по-прежнему использует OpenJDK 6 вместо 7 по умолчанию. Как мне лучше это исправить? Я бы предпочел полностью удалить OpenJDK 6 и позволить OpenJDK 7 быть default-jdk и default-jre.

Мне не нужны официальные архивы Oracle, мне нужны deb-репозитории - стандартный способ Ubuntu.


Кто-то должен был бы встроить это в пакет Debian и поместить его в PPA на Launchpad. Если этого еще никто не сделал, вы можете создать .deb или установить tar.
Мартин Уединг

Тем не менее дело с 12.04
Турбьерн Равн Андерсен

2011 год - теперь 2012 год - действительно ли это было решено (какой из них считался ответом lol? Если не i gonna write a nice wiki on thisв моем вопросе / ответе.

Будет лучше обновить вашу систему до LTS.
Кетан Патель

Ответы:


28

Проблема заключается в том, что default-jreпакет зависит от OpenJDK 6, а для большинства других пакетов их зависимости определены следующим образом default-jre | openjdk-6-jre | sun-java6-jre- до тех пор, пока OpenJDK 7 не станет официально поддерживаться и будет использоваться в качестве версии по умолчанию, или пока все Java-зависимые пакеты не обновят свои зависимости, вы будете должны поддерживать OpenJDK 6 и устанавливать OpenJDK 7 по умолчанию, используя update-java-alternatives. Пример для 64-битной системы:

$ 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

В 32-битной системе имя каталога будет отличаться, правильное имя можно найти с помощью -lпереключателя. Вторая команда может выплевывать много ошибок; либо используйте --jreпереключатель, либо просто игнорируйте ошибки - скрипт изменяет все, что может, и просто игнорирует остальные.

Теоретически можно отредактировать default-jreпакет так, чтобы он зависел от OpenJDK 7, но имейте в виду, что это может принести больше вреда, чем пользы.


2
Чтобы это работало точно, мне нужно было убедиться, что для каждого пакета openjdk-6 или icedtea-6 был соответствующий пакет openjdk-7 или icetea-7, иначе update-java-alternatives не сможет выполнить переключение.
Блэр Заяц

2
После установки icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin) он хорошо работал на Ubuntu 12.04. Спасибо.
Дэвид

10

Для этого в вашей системе должны быть установлены обе версии jdk. Вы можете использовать apt-get для загрузки обоих.

После этого попробуйте,

$ sudo update-alternatives --config java

и выберите JDK, который вы хотите использовать.

Openjdk иногда неблагоприятен для некоторых приложений.

Вы также должны попробовать для оракула-Ява или Sun-Java.

Ссылка ниже очень полезна для этой цели:

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


3

OpenJDK 7 находится в обычных репозиториях Ubuntu в 11.10, если вы ищете openjdk-7-jre и openjdk-7-jdk и устанавливаете их с помощью apt-get / synaptic / software center, они должны заменить openjdk-6, если это не так вы можете сначала удалить пакеты openjdk-6- * apt-get purge openjdk-6-*


1
Пакеты openjdk-7- *, похоже, должны устанавливаться параллельно с openjdk-6- . И если я попытаюсь удалить openjdk-6- , есть множество пакетов, которые будут удалены как зависимые (несмотря на то, что я знаю, что некоторые из этих приложений отлично работают с Java 7).
Иван

видимо, default-jreвсе еще указывает на Java 6.
Торбьерн Равн Андерсен

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.