Ubuntu: OpenJDK 8 - Tidak dapat menemukan paket

103

Jadi saya baru saja menginstal Ubuntu, dan ini adalah pertama kalinya saya bekerja di lingkungan Linux, jadi bersabarlah dengan noobish saya di sini.

Bagaimanapun, saya mengunduh Java 8 JDK langsung dari Oracle, tetapi saya mengerti ada juga OpenJDK untuk Java 8 juga. Saya punya dua pertanyaan.

  1. Apa perbedaan antara versi Oracle dan OpenJDK. Pro kontra?

  2. Ketika saya mencoba dan mendapatkan OpenJDK 8, saya tidak bisa. Saya menempelkan perintah terminal dan pesan kesalahan yang saya dapatkan di sini, berharap mendapatkan saran. Sekali lagi, sangat baru di Linux, berada di distro Linux pertama saya selama kurang dari satu jam di sini pada saat ini.

    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
    

Bantuan apa pun akan dihargai. Sementara itu, saya hanya akan menggunakan paket Oracle. Terima kasih.

Edit:

Jadi, sekarang saya punya masalah baru. Saya menginstal OpenJDK 7, itu datang dengan Maven dan baru saja menginstal sebelum saya menyadari bahwa saya mendapatkan kesepakatan dua-untuk-satu. Sekarang saya memiliki JDK 7, dan Eclipse, dan Maven, dan semuanya berfungsi, tetapi saya terjebak di JDK 7, bukan 8.

Saya melihat ada link di bawah ini, saya berniat untuk memeriksanya di pagi hari, jam 2 pagi dan saya lelah sekarang. Saran lain untuk masalah baru ini akan kami hargai, jika tidak, saya pasti akan memeriksa tautan itu pagi-pagi sekali.

pengguna2223059
sumber
Versi Ubuntu apa yang Anda jalankan? Beberapa versi terbaru telah menyediakannya sebagai opsi instalasi.
Makoto
Tautan Stephen akan menyelesaikan masalah Anda :)
Juned
Terima kasih. Ini jam 2 pagi, jadi saya akan tidur, tapi saya akan memeriksa tautannya besok pagi. Saya menambahkan suntingan ke pertanyaan saya dengan masalah tambahan, jika Anda dapat memeriksanya, itu akan sangat bagus. Jika tautan / jawaban yang ada akan membantu juga, saya minta maaf karena terlalu lelah untuk melihatnya sekarang, saya akan memeriksanya besok pagi.
pengguna2223059
Saya menggunakan ubuntu 14.10 Saya percaya. Apapun rilis jangka panjang terbaru.
pengguna2223059

Jawaban:

126

UPDATE : instalasi tanpa hak root di bawah


Saya menyarankan Anda untuk tidak menginstal paket secara manual di sistem ubuntu jika sudah ada repositori (semi resmi) yang dapat menyelesaikan masalah Anda. Selanjutnya, gunakan Oracle JDK untuk pengembangan, hanya untuk menghindari masalah kompatibilitas (sangat sporadis) (saya sudah mencoba bertahun-tahun yang lalu, pasti lebih baik sekarang).

Tambahkan repo webupd8 ke sistem Anda:

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

Instal versi jdk yang Anda sukai (versi dari java-6 hingga java-9 tersedia):

sudo apt-get install oracle-java8-installer

Anda juga dapat menginstal beberapa versi jdk, mencampurkan openjdk dan versi oracle. Kemudian Anda dapat menggunakan perintah update-java-alternate untuk beralih di antara versi yang diinstal:

# 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

Persyaratan

Jika Anda add-apt-repository: command not foundyakin telah software-properties-commonmenginstal:

sudo apt-get install software-properties-common

Jika Anda menggunakan Ubuntu versi lama:

sudo apt-get install python-software-properties

Instalasi JDK tanpa hak root

Jika Anda tidak memiliki hak administrator pada mesin target Anda, taruhan paling sederhana Anda adalah menggunakan sdkmanuntuk menginstal openjdk bersertifikat zulu:

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

CATATAN : sdkman memungkinkan untuk menginstal juga JDK Oracle resmi, meskipun itu bukan pilihan default. Lihat versi yang tersedia dengan:

sdk ls java

Instal versi yang dipilih dengan:

sdk install java <version>

Sebagai contoh:

sdk install java 9.0.1-oracle

Daftar istilah perintah

  • sudo <command> [command_arguments] : jalankan perintah dengan hak superuser.

  • add-apt-repository <PPA_id> : Ubuntu (seperti setiap turunan Debian dan secara umum setiap distribusi Linux) memiliki repositori utama paket yang menangani hal-hal seperti dependensi dan pembaruan paket. Di Ubuntu dimungkinkan untuk memperluas repositori utama menggunakan PPA (Personal Package Archive) yang biasanya berisi paket yang tidak tersedia di sistem (seperti oracle jdk) atau versi terbaru dari yang tersedia (contoh: LibreOffice 5 di LTS hanya tersedia melalui ini PPA ).

  • apt-get [install|update|upgrade|purge|...] : ini adalah "the" command-line package handler yang digunakan untuk memanipulasi status setiap repositori pada sistem (menginstal / memutakhirkan / memutakhirkan dapat dilihat sebagai perubahan dari status repositori saat ini).

Dalam kasus kami : dengan perintah sudo add-apt-repository ppa:webupd8team/javakami memberi tahu sistem bahwa pembaruan repositori berikutnya harus mengambil informasi paket juga dari repo webupd8.

Dengan sudo apt-get updatekami benar-benar memperbarui repositori sistem (semua operasi ini membutuhkan hak superuser, jadi kami menambahkan sudo ke perintah).

sudo apt-get install oracle-java8-installer

  • update-java-alternate (versi java tertentu dari update-alternatif ): di Ubuntu beberapa paket menyediakan fungsionalitas yang sama (menelusuri internet, mengkompilasi email, mengedit file teks atau menyediakan java / javac executable ...). Untuk memungkinkan sistem memilih alat favorit pengguna dengan tugas tertentu, sebuah mekanisme menggunakan symlink di bawah /etc/alternatives/digunakan. Coba perbarui jdk seperti yang ditunjukkan di atas (beralih antara java 7 dan java 8) dan lihat bagaimana mengubah output dari perintah ini:

    ls -l /etc/alternatives/java*

Dalam kasus kami : sudo update-java-alternatives --set java-8-oracleperbarui symlink di bawah / etc / alternate agar mengarah ke java-8-oracle executable.

Ekstra:

  • man <command> : mulai menggunakan man untuk membaca bantuan yang ditulis dengan sangat baik dan terperinci pada (hampir) setiap perintah shell dan opsinya (setiap perintah yang saya sebutkan dalam jawaban kecil ini memiliki halaman manual, coba man update-java-alternatives).

  • apt-cache search <search_key> : menanyakan cache APT untuk mencari paket yang terkait dengan search_key yang disediakan (bisa berupa nama paket atau beberapa kata dalam deskripsi paket).

  • apt-cache show <package> : menyediakan informasi APT untuk paket tertentu (versi paket, diinstal atau tidak, deskripsi).

Giuseppe Ricupero
sumber
1
Masalahnya adalah saya mendapatkan pesan "Tidak dapat menemukan paket oracle-java8-installer". Hal yang sama terjadi ketika saya mencoba dan mendapatkan openjdk 8 menggunakan perintah sudo apt-get.
pengguna2223059
3
Khususnya, ini (setidaknya diberi label sebagai) versi komersial Oracle dari java, bukan versi komunitas terbuka (openjre).
ThorSummoner
1
@basZero: tampaknya Anda perlu menginstal properti software: apt-get install software-properties-common. Saya akan memperbarui posting sebagai konsekuensinya untuk memasukkan persyaratan ini. Terima kasih
Giuseppe Ricupero
1
Jawaban ini tidak valid - oracle melarang pengunduhan langsung penginstal java. sudo apt-get install oracle-java8-installer gagal
Alec Istomin
2
Saya sudah mencoba menyelesaikan masalah ini selama 4 jam. Terima kasih atas solusi luar biasa ini!
ickyrr
116

Seperti yang Anda lihat, saya hanya menginstal java 1.7 (pada mesin Ubuntu 14.04).

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

Untuk menginstal Java 8, saya lakukan,

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

Setelah itu sekarang saya punya java 7 dan 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

BONUS ADDED (cara beralih di antara versi yang berbeda)

  • jalankan perintah follwing dari terminal:

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:

Seperti yang Anda lihat, saya menjalankan buka jdk 8. Untuk beralih ke jdk 7, tekan 1dan tekan Entertombol. Lakukan hal yang sama untuk javacjuga dengan sudo update-alternatives --config javac,.

Periksa versi untuk mengonfirmasi perubahan: java -versiondan javac -version.

samsamara
sumber
2
Sangat berguna karena saya tidak tahu repo mana yang diperlukan untuk menginstal OpenJDK! Terima kasih banyak.
cram2208
@ cram2208 senang telah membantu Anda. terima kasih atas komentarnya.
samsamara
Apakah openjdk-r cukup aman untuk server?
Wang
Terima kasih atas jawaban detailnya, solusi ini sangat cocok untuk saya.
Muddasir23
14

Saya mendapatkan OpenJDK 8 dari repositori resmi Debian, daripada beberapa PPA acak atau biner Oracle non-gratis. Inilah cara saya melakukannya:

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

Buat /etc/apt/sources.list.d/debian-jessie-backports.list:

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

Buat /etc/apt/preferences.d/debian-jessie-backports:

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

Kemudian akhirnya lakukan penginstalan:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
Hans-Christoph Steiner
sumber
1
Dan terakhir akhirnya update-alternatives --config java ;-)
Javali
Terima kasih banyak! Ini adalah satu-satunya solusi yang berhasil untuk saya (Deb 8)
3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

ini seharusnya berhasil

Ahmed Emad
sumber
Tolong tambahkan penjelasan apa yang ditambahkan ini pada jawaban yang ada.
Gert Arnold
Saya menggunakan WSL2 dari Windows, dan saya lupa memperbarui paket sebelum menginstal OpenJDK dan mendapatkan kesalahan yang sama. @GertArnold, jawaban Zoe membantu saya dalam skenario itu.
pcdro
0

Saya mengalami masalah yang sama dan mencoba semua solusi di halaman ini tetapi tidak ada yang berhasil.

Apa yang akhirnya berhasil adalah menambahkan universerepo ke daftar repo saya. Untuk melakukan itu jalankan perintah berikut

sudo add-apt-repository universe

Setelah menjalankan perintah di atas saya bisa menjalankannya

sudo apt install openjdk-8-jre

tanpa masalah dan paket telah diinstal.

Semoga ini bisa membantu seseorang.

Daniel Black
sumber
Tidak yakin mengapa saya tidak disukai untuk jawaban ini. Jika ada sesuatu yang tidak benar atau potensi masalah, silakan tinggalkan komentar untuk membantu orang lain dan saya sendiri lebih memahami.
Daniel Black
0

Setelah menambahkan JDKrepo, sebelum Installing mungkin Anda ingin menjalankan update terlebih dahulu agar repo dapat ditambahkan run apt update

kemudian lanjutkan dengan instalasi Anda sudo apt install adoptopenjdk-8-hotspot

franck
sumber