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.
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
Я добавил эту строку в / 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, и где он находится в ПУТИ.
Во-первых: удалите плагин 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 .
Надеюсь, это поможет.
На новых машинах Ubuntu 10.10 я делаю следующее:
- добавляю java-6-sun,
- удаляю openJDK (добавляю сначала солнечную Java, иначе куча вещей будет удалено как tomcat и т.д.)
Тогда для меня все в порядке, никаких зависимостей openJDK
Ответы на этот вопрос не помогли мне. То есть произошла ошибка:
sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre
С ошибкой:
Virtual packages like 'sun-java6-jre' can't be removed
Вместо этого попробуйте эти инструкции :
icedtea-6-jre-cacao
), если он установлен. OpenJDK (IcedTea) теперь установлен, что должно позволить вам (если у вас возникла эта ошибка) продолжить установку Oracle JDK без ошибок.
См. также:
Файл .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
При использовании 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, если кто-то сочтет это полезным.
У меня была такая же проблема однажды около трех лет назад с 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
Откройте терминал и введите следующее:
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.
Я думаю, что проблема в том, что некоторые пакеты 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
java -version
(будет отображаться только Java Sun)sudo update-java-alternatives -l
и работает только если у вас установлено два jdk и вы хотите установить Яву Sun как окружение по умолчанию