Как правильно удалить OpenJDK / OpenJRE и установить SunJDK / SunJRE по умолчанию

Ubuntu, похоже, больше поддерживает OpenJDK / JRE, чем Sun JDK / JRE. Даже после того, как я установил Sun JRE, JDK и плагин и потратил некоторое время на извлечение пакетов, связанных с OpenJDK, apt-get установил их обратно с некоторыми пакетами в качестве зависимости. Можно ли исправить это поведение в пользу пакетов Sun Java? Мне бы хотелось, чтобы был установлен один-единственный стек Java (да, это немного OCD , но я бы хотел, чтобы мои системы были чистыми), и хочу, чтобы это была Sun Java.

Обновление: , как отмечает Маркос Рориз, проблема, по-видимому, в default-jre (от которого зависят зависимые от Java пакеты), указывающем на OpenJDK, поэтому возникает вопрос о том, как взломать default-jre / default-jdk для указания на Sun Java.

49
задан 11 June 2013 в 19:58

10 ответов

openjdk እና icedtea ን ይሰርዙ:

apt-get purge openjdk-\* icedtea-\* icedtea6-\*

የሚከተሉትን ወደ /etc/apt/sources.list [12]] ያክሉ Sun / Oracle JRE ወይም JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 
6
ответ дан 11 June 2013 в 19:58

Я добавил эту строку в / etc / файл среды: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" и добавил JAVA_HOME / bin в PATH переменная, НО ОС по-прежнему не распознает команду java, говорит, что это не установлен и предлагает мне gcj и openjdk.

Вы это проверили?

echo $JAVA_HOME 
echo $PATH

Если вам это не нужно: удалите openjdk и gcj в синаптическом режиме или с помощью apt-get.

apt-get remove gcj 
apt-get remove openjdk

Тогда я бы запретил java использовать альтернативы, и делал бы в основном так, как предлагал BillThor , почему я дал ему положительный голос.

which javac
which java

должен указывать на то, где вы установили java, и где он находится в ПУТИ.

4
ответ дан 11 June 2013 в 19:58

Во-первых: удалите плагин openjdk и icedtea.

sudo apt-get remove openjdk* icedtea*

Второе: скопируйте файл .bin jdk в / opt или / usr / java и извлеките его.

sudo cp jdk_1.16.0.bin /usr/java

Третье: поместите ссылку на файл java в / usr / bin /

ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java
ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac

обновите альтернативы с помощью update- альтернативы

Создайте символическую ссылку на плагин Java в каталоге плагинов Firefox.

Создайте символическую ссылку на файл libnpjp2.so плагина Java в каталоге плагинов Firefox:

   cd  

<Firefox>/plugins


 ln -s  

<JRE>/lib/i386/libnpjp2.so .

Надеюсь, это поможет.

1
ответ дан 11 June 2013 в 19:58

На новых машинах Ubuntu 10.10 я делаю следующее:

  • добавляю java-6-sun,
  • удаляю openJDK (добавляю сначала солнечную Java, иначе куча вещей будет удалено как tomcat и т.д.)

Тогда для меня все в порядке, никаких зависимостей openJDK

2
ответ дан 11 June 2013 в 19:58

Ответы на этот вопрос не помогли мне. То есть произошла ошибка:

sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre

С ошибкой:

Virtual packages like 'sun-java6-jre' can't be removed

Вместо этого попробуйте эти инструкции :

  1. Откройте Центр программного обеспечения Ubuntu .
  2. Найдите IcedTea.
  3. Удалите подключаемый модуль Java IcedTea ( icedtea-6-jre-cacao ), если он установлен.
  4. Выберите OpenJDK Java 7. Runtime.
  5. Нажмите «Установить».
  6. Подождите, пока пакет размером 41,6 МБ для загрузки и установки.

OpenJDK (IcedTea) теперь установлен, что должно позволить вам (если у вас возникла эта ошибка) продолжить установку Oracle JDK без ошибок.

См. также:

2
ответ дан 11 June 2013 в 19:58

Файл .jdk1.6.0_23.jinfo должен быть списком поставляемых программ и их путей. За описательным заголовком следует пустая строка. Затем список программ в формате трех полей: тип записи (jre / jkd / plugin); название программы; и путь. У вас должны быть файлы jinfo, которые вы можете использовать, чтобы увидеть, как должно выглядеть их содержимое. Вероятно, это используется альтернативным механизмом, чтобы определить, какие ссылки создавать. Глава моего пакета Sun - это.

name=java-6-sun-1.6.0.22
alias=java-6-sun
priority=63
section=non-free

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java_vm /usr/lib/jvm/java-6-sun/jre/bin/java_vm

Если вы хотите переопределить команды Java по умолчанию без использования альтернативного механизма, укажите путь Java перед / usr / bin в пути.

При установке вручную я устанавливаю Java в / opt .для вашей установки я бы установил в /opt/jdk1.6.0_23 . Затем я помещаю путь $ JAVA_HOME / bin в начало моей переменной PATH .

РЕДАКТИРОВАТЬ: Это весь файл Sun. Примечание .java-6-sun.jinfo - это символическая ссылка на .java-6-sun-1.6.0.22.jinfo .

name=java-6-sun-1.6.0.22
alias=java-6-sun
priority=63
section=non-free

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java_vm /usr/lib/jvm/java-6-sun/jre/bin/java_vm
jre javaws /usr/lib/jvm/java-6-sun/jre/bin/javaws
jre jcontrol /usr/lib/jvm/java-6-sun/jre/bin/jcontrol
jre keytool /usr/lib/jvm/java-6-sun/jre/bin/keytool
jre pack200 /usr/lib/jvm/java-6-sun/jre/bin/pack200
jre policytool /usr/lib/jvm/java-6-sun/jre/bin/policytool
jre rmid /usr/lib/jvm/java-6-sun/jre/bin/rmid
jre rmiregistry /usr/lib/jvm/java-6-sun/jre/bin/rmiregistry
jre unpack200 /usr/lib/jvm/java-6-sun/jre/bin/unpack200
jre orbd /usr/lib/jvm/java-6-sun/jre/bin/orbd
jre servertool /usr/lib/jvm/java-6-sun/jre/bin/servertool
jre tnameserv /usr/lib/jvm/java-6-sun/jre/bin/tnameserv
jre jexec /usr/lib/jvm/java-6-sun/jre/lib/jexec
jdk HtmlConverter /usr/lib/jvm/java-6-sun/bin/HtmlConverter
jdk appletviewer /usr/lib/jvm/java-6-sun/bin/appletviewer
jdk apt /usr/lib/jvm/java-6-sun/bin/apt
jdk extcheck /usr/lib/jvm/java-6-sun/bin/extcheck
jdk idlj /usr/lib/jvm/java-6-sun/bin/idlj
jdk jar /usr/lib/jvm/java-6-sun/bin/jar
jdk jarsigner /usr/lib/jvm/java-6-sun/bin/jarsigner
jdk javac /usr/lib/jvm/java-6-sun/bin/javac
jdk javadoc /usr/lib/jvm/java-6-sun/bin/javadoc
jdk javah /usr/lib/jvm/java-6-sun/bin/javah
jdk javap /usr/lib/jvm/java-6-sun/bin/javap
jdk jconsole /usr/lib/jvm/java-6-sun/bin/jconsole
jdk jdb /usr/lib/jvm/java-6-sun/bin/jdb
jdk jhat /usr/lib/jvm/java-6-sun/bin/jhat
jdk jinfo /usr/lib/jvm/java-6-sun/bin/jinfo
jdk jmap /usr/lib/jvm/java-6-sun/bin/jmap
jdk jps /usr/lib/jvm/java-6-sun/bin/jps
jdk jrunscript /usr/lib/jvm/java-6-sun/bin/jrunscript
jdk jsadebugd /usr/lib/jvm/java-6-sun/bin/jsadebugd
jdk jstack /usr/lib/jvm/java-6-sun/bin/jstack
jdk jstat /usr/lib/jvm/java-6-sun/bin/jstat
jdk jstatd /usr/lib/jvm/java-6-sun/bin/jstatd
jdk native2ascii /usr/lib/jvm/java-6-sun/bin/native2ascii
jdk rmic /usr/lib/jvm/java-6-sun/bin/rmic
jdk schemagen /usr/lib/jvm/java-6-sun/bin/schemagen
jdk serialver /usr/lib/jvm/java-6-sun/bin/serialver
jdk wsgen /usr/lib/jvm/java-6-sun/bin/wsgen
jdk wsimport /usr/lib/jvm/java-6-sun/bin/wsimport
jdk xjc /usr/lib/jvm/java-6-sun/bin/xjc
plugin xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
plugin mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
6
ответ дан 11 June 2013 в 19:58

При использовании Ubuntu 10.10 кажется, что вам нужно сначала пометить libaccess-bridge-java для удаления в Synaptic, а затем пометить openjdk-6-jre-headless.

Я получил список, который нужно удалить:

ca-Certific-java, icedtea-6-jre-cacao, libaccess-bridge-java, libaccess-bridge-java-jni, openjdk-6-jre, openjdk-6-jre-без головы, openjdk-6-jre-lib.

Это сработало, но после этого остался каталог / etc / java-6-openjdk с различными файлами и подкаталогами внутри, которые я изолировал в новом каталоге. Не было никаких необычных эффектов, так что, по-видимому, это просто остатки.

В результате у меня осталась Java, которую я скачал прямо с веб-сайта Java. Однако, несмотря на то, что он был установлен по умолчанию и была создана ссылка на каталог плагинов Firefox, он больше не работал. При установке sun-java6-jre и связанных с ним пакетов gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin и unixodbc через Synaptic плагин Java снова начал работать. Удаление ссылки в каталоге плагинов и замена ее фактическим файлом libnpjp2.so не помогли. Использование ссылки на файлы libjavaplugin_oji.so в каталогах ns7 или ns7-gcc29 в Java, установленной через Synaptic, также не работало. Это наводит на мысль, что для получения последней версии подключаемого модуля Java в Firefox можно следовать инструкциям на веб-сайте Java, и что для запуска загруженной Java-версии требуется интегрированная Java-версия Linux любого вида, которая затем полагается для своей работы на окружающие его файлы после активации плагина. Хотя полное понимание кода, включающего Java и Linux, необходимо для того, чтобы действительно решить эту загадку, возможно, эти эксперименты помогут найти причины, по которым в этом случае могут понадобиться две Java. По крайней мере, можно удалить и всю Java, если кто-то сочтет это полезным.

2
ответ дан 11 June 2013 в 19:58

Установка Sun Java на старые версии Ubuntu (9.10 и ниже)

У меня была такая же проблема однажды около трех лет назад с Ubuntu 8.04, я думаю. Была странная проблема при использовании openjre, и проблема была решена с помощью версии sun jre. Вот шаги в терминале, которые применимы к версиям ниже 10.04, так как начиная с 10.04 java sun была опущена и заменена openjre:

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts

(Все, что связано с java Sun. Просто чтобы убедиться)

После этого, если бы вы удалили openjdk, то у вас была бы только java sun. Если вы не удалили его, то у вас есть и то, и другое. Чтобы перейти от одного к другому, сделайте следующее:

sudo update-java-alternatives -l - Это покажет вам список java-движков, которые вы можете использовать.

Название java альтернативы находится слева, так что, например, openjdk будет выглядеть следующим образом:

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

И вы бы установили систему на openjdk вот так:

sudo update-java-alternatives -s java-6-openjdk

Если вы хотите использовать Sun, то вы сделаете это (после установки пакетов Sun):

sudo update-java-alternatives -s java-6-sun

Если вы хотите использовать java-версию 7, просто измените число 6, упомянутое выше, на 7. Например, если бы я хотел установить openjre версию 7, я бы:

sudo apt-get install openjdk-7-jre default-jre default-jre-headless

Установка Sun Java на новые версии Ubuntu (10.04 и выше)

Откройте терминал и введите следующее:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update   
sudo apt-get upgrade   
sudo apt-get install oracle-java7-installer

Это должно установить версию Sun Java на вашу систему. Чтобы изменить его, просто сделайте следующее в случае, если у вас есть другие java альтернативы:

sudo update-java-alternatives -s java-7-oracle  

Если вы хотите, чтобы установка была автоматической, наберите следующее:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

после этого просто сделайте следующее, чтобы установить переменные окружения по умолчанию:

sudo apt-get install oracle-java7-set-default

Обратите внимание, что PPA включает в себя версии 6, 7 и 8. Таким образом, вы можете установить любую из них, просто изменив номер в строке установки, например:

sudo apt-get install oracle-java8-installer

Would install Java 8. После установки версии Java, которую вы хотите использовать, и установки версии по умолчанию командой update-java-alternatives, вы можете проверить, какую версию вы используете, набрав следующее:

java -version

Она покажет вам версию по умолчанию, которую вы используете в данный момент.

Хочу также упомянуть, что OpenJRE/JDK прошёл долгий путь с 2 или 3 лет назад, когда у него было много проблем, которые решались с помощью перехода на Sun Java.

35
ответ дан 11 June 2013 в 19:58

Я думаю, что проблема в том, что некоторые пакеты Java полагаются на default-jre, что указывает на openjdk-jre. Я не думаю, что есть простой способ постоянно деинсталлировать openjdk. Дело в том, что вы, вероятно, снова столкнетесь с openjdk при установке java-пакета/программы.

Но если вы хотите иметь и то, и другое, легко ли установить java runtime программы (java, javah, javap и т.д.) на реализацию sun. Сделайте это:

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

или если вы Java dev (установите sdk и srcs):

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source

И установите это в качестве программ по умолчанию с:

sudo update-java-alternatives -s java-6-sun
11
ответ дан 11 June 2013 в 19:58
  1. Open System->Administration-> Synaptic Package Manager и затем полностью удалить OpenJDK.
  2. Тестовая версия Java, набрав в оболочке java -version (будет отображаться только Java Sun)
  3. Введите sudo update-java-alternatives -l
  4. и все готово. Теперь у вас установлена только Ява Sun и она настроена по умолчанию jdk

и работает только если у вас установлено два jdk и вы хотите установить Яву Sun как окружение по умолчанию

3
ответ дан 11 June 2013 в 19:58

Другие вопросы по тегам:

Похожие вопросы: