Ubuntu: OpenJDK 8-не удается найти пакет


Итак, я только что установил Ubuntu, и это мой первый раз, когда я работаю в среде Linux, поэтому несите мой noobishness здесь.

в любом случае, я загрузил Java 8 JDK непосредственно из Oracle, но я понимаю, что есть также OpenJDK для Java 8. У меня есть два вопроса.

  1. в чем разница между версией Oracle и OpenJDK. Плюсы / Минусы?

  2. когда я пытаюсь использовать OpenJDK 8, я не могу. Я оклейке терминалов команду и сообщение об ошибке я получаю здесь, надеясь на совет. Опять же, очень новый для Linux, был на моем первом дистрибутиве Linux когда-либо менее часа здесь в этот момент.

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package openjdk-8-jdk
    

любая помощь будет оценили. В то же время, я просто собираюсь использовать пакета Oracle. Спасибо.

Edit:

Итак, теперь у меня новая проблема. Я установил OpenJDK 7, он пришел с Maven и только что установлен, прежде чем я понял, что получаю сделку два за один. Теперь у меня есть JDK 7, и Eclipse, и Maven, и все они работают, но я застрял на JDK 7, а не на 8.

я увидел, что там ссылка ниже, я намерен проверить его утром, 2 часа ночи и я устал. Любые другие советы по этому новому вопросу будут оценены, иначе я обязательно проверю эту ссылку первым делом утром.

3 62

3 ответа:

обновление: установка без привилегий root ниже


я советую вам не устанавливать пакеты вручную в системе ubuntu, если уже есть (полуофициальный) репозиторий, способный решить вашу проблему. Кроме того, используйте Oracle JDK для разработки, чтобы избежать (очень спорадических) проблем совместимости (я пробовал много лет назад, теперь это, безусловно, лучше).

добавить webupd8 repo в вашем система:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

установите предпочтительную версию jdk (доступны версии от java-6 до java-9):

sudo apt-get install oracle-java8-installer

вы также можете установить несколько версий jdk, смешивая версии openjdk и oracle. Затем вы можете использовать команду обновление-java-альтернативы для переключения между установленной версии:

# list available jdk
update-java-alternatives --list

# use jdk7
sudo update-java-alternatives --set java-7-oracle

# use jdk8
sudo update-java-alternatives --set java-8-oracle

требования

если вы add-apt-repository: command not found обязательно software-properties-common установлено:

sudo apt-get install software-properties-common

если вы используете более старую версию Ubuntu:

sudo apt-get install python-software-properties

установка JDK без привилегий root

если у вас нет прав администратора на вашей целевой машине, ваша самая простая ставка-использовать sdkman для установки сертифицированного openjdk zulu:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

Примечание: sdkman позволяет установить также официальный Oracle JDK, хотя это не вариант по умолчанию. Просмотр доступен версии с:

sdk ls java

установите выбранную версию с помощью:

sdk install java <version>

например:

sdk install java 9.0.1-oracle

глоссарий команд

  • судо<command> [command_arguments] выполнить команду с правами суперпользователя.

  • add-apt-repository<PPA_id>: Ubuntu (как и все производные Debian и, вообще говоря, каждый дистрибутив Linux) имеет основной репозиторий пакетов, которые обрабатывают такие вещи, как зависимости пакетов и обновления. В Ubuntu можно расширить основной репозиторий с помощью PPA (Personal Package Archive), который обычно содержит пакеты, недоступные в системе (например, oracle jdk) или обновленные версии доступных (например: LibreOffice 5 в LTS доступен только через это PPA).

  • apt-get[install|update|upgrade|purge|...]: это обработчик пакетов командной строки используется для манипулирования state каждого репозитория в системе (установка / обновление / Обновление можно рассматривать как изменение текущего состояния репозитория).

в нашем случае: С помощью команды sudo add-apt-repository ppa:webupd8team/java мы сообщаем системе, что следующее обновление репозитория должно также получить информацию о пакетах из репозитория webupd8.

С sudo apt-get update мы фактически обновляем системный репозиторий (все эти операции требуют привилегии суперпользователя, поэтому мы добавляем судо к командам).

sudo apt-get install oracle-java8-installer

  • обновление-java-альтернативы (конкретная версия java обновление-альтернатив): в Ubuntu несколько пакетов обеспечивают одинаковую функциональность (просмотр интернета, компиляция почты, редактирование текстового файла или предоставление исполняемых файлов java/javac...). Позволяет системе выбрать инструмент избранное пользователя с учетом конкретной задачи механизм используя ссылки под это. Попробуйте обновить jdk, как указано выше (переключение между java 7 и java 8) и посмотреть, как изменить вывод этой команды:

    ls -l /etc/alternatives/java*

в нашем случае:sudo update-java-alternatives --set java-8-oracle обновить символические ссылки в разделе/etc / alternatives для указания на исполняемые файлы java-8-oracle.

дополнительно:

  • человек<command>: начать использовать человек, чтобы прочитать действительно хорошо написанную и подробную справку по (почти) каждой команде оболочки и ее параметрам (каждая команда, которую я упоминаю в этом небольшом ответе, имеет man-страницу, попробуйте man update-java-alternatives).

  • apt-cachesearch <search_key>: запрос кэша APT для поиска пакета, связанного с предоставленным ключом search_key (может быть именем пакета или некоторым словом в описании пакета).

  • apt-cacheshow <package>: обеспечивает APT информация для конкретного пакета (версия пакета, установлена или нет, описание).

как вы можете видеть, у меня установлена только java 1.7 (на машине Ubuntu 14.04).

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64

чтобы установить Java 8, я сделал,

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

потом, теперь у меня есть java 7 и 8,

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

бонус добавлен (как переключаться между различными версиями)

  • выполните команду follwing из терминала:

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number:

как вы можете видеть я запуск открытого jdk 8. Чтобы переключиться на jdk 7, Нажмите 1 и ударил Enter ключ. Сделайте то же самое для javac С, sudo update-alternatives --config javac.

проверять версии, чтобы подтвердить изменение: java -version и javac -version.

Я получаю OpenJDK 8 из официальных репозиториев Debian, а не какой-то случайный PPA или несвободный двоичный файл Oracle. Вот как я это сделал:

sudo apt-get install debian-keyring debian-archive-keyring

сделать /etc/apt/sources.list.d/debian-jessie-backports.list:

deb http://httpredir.debian.org/debian/ jessie-backports main

сделать /etc/apt/preferences.d/debian-jessie-backports:

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

затем, наконец, установить:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk