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


103

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

В любом случае, я загрузил 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. Спасибо.

Редактировать:

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

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



Какая версия Ubuntu у вас установлена? В последней паре версий он был доступен в качестве варианта установки.
Макото

Ссылка Стивена решит вашу проблему :)
июнь

Спасибо. Сейчас 2 часа ночи, иду спать, а утром проверю ссылку. Я добавил правку к своему вопросу с дополнительной проблемой, если бы вы могли ее просмотреть, было бы здорово. Если существующая ссылка / ответ тоже поможет в этом, я извиняюсь за то, что слишком устал, чтобы смотреть на него прямо сейчас, я проверю его утром.
user2223059 05

Я считаю, что на Ubuntu 14.10. Каким бы ни был последний долгосрочный релиз.
user2223059 05

Ответы:


126

ОБНОВЛЕНИЕ : установка без root прав ниже


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

Добавьте репозиторий webupd8 в вашу систему:

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. Затем вы можете использовать команду update-java-alternatives для переключения между установленной версией:

# 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для установки сертифицированного zulu openjdk:

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

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

  • sudo <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|...] : это «» обработчик пакетов командной строки, используемый для управления состоянием каждого репозитория в системе (установку / обновление / обновление можно рассматривать как изменение текущего состояния репозитория).

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

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

sudo apt-get install oracle-java8-installer

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

    ls -l /etc/alternatives/java*

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

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

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

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

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


1
Проблема в том, что я получаю сообщение «Не удалось найти пакет oracle-java8-installer». То же самое происходит, когда я пытаюсь получить openjdk 8 с помощью команды sudo apt-get.
user2223059 05

3
Примечательно, что это (по крайней мере, обозначенная как) коммерческая версия Java для Oracle, а не версия открытого сообщества (openjre).
ThorSummoner

1
@basZero: кажется , вам нужно установить свойство программного обеспечения: apt-get install software-properties-common. Я обновлю сообщение, чтобы включить это требование. Спасибо
Джузеппе Рикуперо

1
Этот ответ недействителен - oracle запрещает прямую загрузку установщика java. sudo apt-get install oracle-java8-installer не работает
Алек Истомин,

2
Уже 4 часа пытаюсь решить эту проблему. Спасибо за отличное решение!
ickyrr 08

116

Как видите, у меня установлена ​​только 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

БОНУС ДОБАВЛЕН (как переключаться между разными версиями)

  • запустите следующую команду из терминала:

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:

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

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


2
Очень полезно, потому что я не знал, какое репо требуется для установки OpenJDK! Большое спасибо.
cram2208

@ cram2208 рад, что вам помог. Спасибо за комментарий.
самсамара

Достаточно ли безопасен openjdk-r для сервера?
Ван

Спасибо за подробный ответ, это решение отлично работает для меня.
Muddasir23 01

14

Я получаю 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

1
И наконец, финал update-alternatives --config java ;-)
Джавали

Большое спасибо! Это единственное решение, которое сработало для меня (Deb 8)

3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

это должно работать


Пожалуйста, объясните, что это добавляет к существующим ответам.
Герт Арнольд

Я использовал WSL2 из Windows, и я забыл обновить пакеты перед установкой OpenJDK и получил ту же ошибку. @GertArnold, ответ Зои помог мне в этом сценарии.
pcdro

0

У меня была такая же проблема, и я попробовал все решения на этой странице, но ни одно из них не помогло.

Наконец, сработало добавление universeрепо в мой список репо. Для этого выполните следующую команду

sudo add-apt-repository universe

После выполнения указанной выше команды я смог запустить

sudo apt install openjdk-8-jre

без проблем, и пакет был установлен.

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


Не уверен, почему мне отказали за этот ответ. Если есть что-то неправильное или потенциальная проблема, пожалуйста, оставьте комментарий, чтобы помочь другим и мне лучше понять.
Дэниел Блэк,

0

После добавления JDKрепо перед установкой вы можете сначала запустить обновление, чтобы можно было добавить репо. apt update

а затем продолжите установку sudo apt install adoptopenjdk-8-hotspot

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