Ubuntu: OpenJDK 8 - ไม่พบแพ็คเกจ


104

ดังนั้นฉันจึงเพิ่งติดตั้ง Ubuntu และนี่เป็นครั้งแรกของฉันที่ทำงานในสภาพแวดล้อม Linux ดังนั้นโปรดอดทนกับความไร้เดียงสาของฉันที่นี่

อย่างไรก็ตามฉันดาวน์โหลด Java 8 JDK โดยตรงจาก Oracle แต่ฉันเข้าใจว่ายังมี OpenJDK สำหรับ Java 8 ด้วย ฉันมีสองคำถาม

  1. อะไรคือความแตกต่างระหว่างเวอร์ชัน Oracle และ OpenJDK ข้อเสียข้อดี?

  2. เมื่อฉันลองรับ OpenJDK 8 ไม่ได้ ฉันวางคำสั่งเทอร์มินัลและข้อความแสดงข้อผิดพลาดที่ฉันได้รับที่นี่โดยหวังว่าจะได้รับคำแนะนำ อีกครั้งเป็นสิ่งใหม่มากสำหรับ Linux อยู่ใน Linux distro เครื่องแรกของฉันมาไม่ถึงหนึ่งชั่วโมง ณ จุดนี้

    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

ฉันเห็นว่ามีลิงค์ด้านล่างฉันตั้งใจจะตรวจสอบในตอนเช้าตอนนี้เป็นเวลาตีสองและตอนนี้ฉันเหนื่อย คำแนะนำอื่น ๆ สำหรับปัญหาใหม่นี้จะได้รับการชื่นชมไม่เช่นนั้นฉันจะตรวจสอบลิงก์นั้นเป็นสิ่งแรกในตอนเช้า



คุณใช้ Ubuntu เวอร์ชันใด สองเวอร์ชันล่าสุดมีให้เป็นตัวเลือกการติดตั้ง
Makoto

ลิงก์ของ Stephen จะแก้ไขปัญหาของคุณ :)
58

ขอบคุณ. เวลาตี 2 ฉันจะเข้านอน แต่จะเช็คลิงค์ตอนเช้า ฉันได้เพิ่มการแก้ไขคำถามของฉันพร้อมกับปัญหาเพิ่มเติมหากคุณสามารถตรวจสอบได้ก็จะดีมาก หากลิงก์ / คำตอบที่มีอยู่จะช่วยได้เช่นกันฉันขอโทษที่เหนื่อยเกินไปที่จะดูตอนนี้ฉันจะตรวจสอบในตอนเช้า
user2223059

ฉันใช้ Ubuntu 14.10 ฉันเชื่อ ไม่ว่าการเปิดตัวระยะยาวล่าสุดคืออะไร
user2223059

คำตอบ:


127

UPDATE : การติดตั้งโดยไม่มีสิทธิ์รูทด้านล่าง


ฉันแนะนำให้คุณไม่ติดตั้งแพ็คเกจด้วยตนเองบนระบบอูบุนตูหากมีที่เก็บ (กึ่งทางการ) ที่สามารถแก้ปัญหาของคุณได้ นอกจากนี้ให้ใช้ Oracle JDK ในการพัฒนาเพื่อหลีกเลี่ยงปัญหาความเข้ากันได้ (ประปรายมาก) (ฉันเคยลองมาหลายปีแล้วตอนนี้ดีขึ้นแน่นอน)

เพิ่มrepo 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-alternateเพื่อสลับระหว่างเวอร์ชันที่ติดตั้ง:

# 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 โดยไม่มีสิทธิ์รูท

หากคุณไม่มีสิทธิ์ของผู้ดูแลระบบในเครื่องเป้าหมายของคุณการเดิมพันที่ง่ายที่สุดคือใช้sdkmanเพื่อติดตั้ง 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] : ดำเนินการคำสั่งด้วยสิทธิ์ superuser

  • 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 repo ด้วย

เมื่อsudo apt-get updateเราอัปเดตที่เก็บระบบจริง ๆ (การดำเนินการทั้งหมดนี้ต้องใช้สิทธิ์ผู้ใช้ขั้นสูงดังนั้นเราจึงใส่sudoไว้ข้างหน้าคำสั่ง)

sudo apt-get install oracle-java8-installer

  • update-java-ทางเลือก ( ทางเลือกการอัปเดตเวอร์ชัน java เฉพาะ): ใน Ubuntu หลายแพ็คเกจมีฟังก์ชันการทำงานเหมือนกัน (ท่องอินเทอร์เน็ตรวบรวมอีเมลแก้ไขไฟล์ข้อความหรือจัดเตรียมไฟล์ปฏิบัติการ java / javac ... ) ที่จะช่วยให้ระบบการเลือกเครื่องมือที่ใช้ในรายการโปรดรับงานเฉพาะกลไกการใช้symlinksภายใต้การ/etc/alternatives/ถูกนำมาใช้ ลองอัปเดต jdk ตามที่ระบุไว้ด้านบน (สลับระหว่าง java 7 และ java 8) และดูว่าเปลี่ยนผลลัพธ์ของคำสั่งนี้อย่างไร:

    ls -l /etc/alternatives/java*

ในกรณีของเรา : sudo update-java-alternatives --set java-8-oracleอัปเดต symlinks ภายใต้ / etc / ทางเลือกเพื่อชี้ไปที่ไฟล์ปฏิบัติการ java-8-oracle

พิเศษ:

  • man <command> : เริ่มใช้ man เพื่ออ่านความช่วยเหลือที่เขียนได้ดีและมีรายละเอียดเกี่ยวกับคำสั่งเชลล์ (เกือบ) ทุกคำสั่งและตัวเลือกต่างๆ (ทุกคำสั่งที่ฉันพูดถึงในคำตอบเล็ก ๆ นี้มี man page ให้ลองman update-java-alternatives)

  • apt-cache search <search_key> : ค้นหาแคช APT เพื่อค้นหาแพ็กเกจที่เกี่ยวข้องกับคีย์การค้นหาที่ให้มา (อาจเป็นชื่อแพ็กเกจหรือบางคำในคำอธิบายแพ็กเกจ)

  • apt-cache show <package> : ให้ข้อมูล APT สำหรับแพ็กเกจเฉพาะ (เวอร์ชันแพ็กเกจติดตั้งหรือไม่คำอธิบาย)


1
ปัญหาคือฉันได้รับข้อความ "Unable to locate package oracle-java8-installer" สิ่งเดียวกันเกิดขึ้นเมื่อฉันลองและรับ openjdk 8 โดยใช้คำสั่ง sudo apt-get
user2223059

3
โดยเฉพาะอย่างยิ่งนี่คือ (อย่างน้อยมีชื่อว่า) java เวอร์ชันเชิงพาณิชย์ของ Oracle ไม่ใช่เวอร์ชันชุมชนเปิด (openjre)
ThorSummoner

1
@basZero: ดูเหมือนว่าคุณต้องติดตั้งคุณสมบัติซอฟต์แวร์: apt-get install software-properties-common. ฉันจะอัปเดตโพสต์เพื่อรวมข้อกำหนดนี้ ขอบคุณ
Giuseppe Ricupero

1
คำตอบนี้ไม่ถูกต้อง - oracle ห้ามไม่ให้ดาวน์โหลดโปรแกรมติดตั้ง java โดยตรง sudo apt-get install oracle-java8-installer ล้มเหลว
Alec Istomin

2
ฉันพยายามแก้ปัญหานี้มา 4 ชั่วโมงแล้ว ขอบคุณสำหรับโซลูชันที่ยอดเยี่ยมนี้!
ickyrr

118

อย่างที่คุณเห็นฉันติดตั้ง 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.


2
มีประโยชน์มากสำหรับฉันไม่รู้ว่าต้องใช้ repo ใดในการติดตั้ง OpenJDK! ขอบคุณมาก.
อัด 2208

@ Cram2208 ดีใจที่ช่วยคุณ. ขอบคุณสำหรับความคิดเห็น
samsamara

openjdk-r ปลอดภัยเพียงพอสำหรับเซิร์ฟเวอร์หรือไม่
วัง

1
ขอบคุณสำหรับคำตอบโดยละเอียดวิธีนี้ใช้ได้ผลดีสำหรับฉัน
Muddasir23

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 ;-)
Javali

ขอบคุณมาก! นี่เป็นทางออกเดียวที่ใช้ได้ผลสำหรับฉัน (Deb 8)

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

สิ่งนี้ควรใช้งานได้


โปรดเพิ่มคำอธิบายสิ่งที่เพิ่มเข้าไปในคำตอบที่มีอยู่
Gert Arnold

ฉันใช้ WSL2 จาก Windows และฉันลืมอัปเดตแพ็คเกจก่อนติดตั้ง OpenJDK และได้รับข้อผิดพลาดเดียวกัน @GertArnold คำตอบของ Zoe ช่วยฉันในสถานการณ์นั้น
pcdro

1

ฉันประสบปัญหาเดียวกันและลองใช้วิธีแก้ปัญหาทั้งหมดในหน้านี้ แต่ไม่มีวิธีใดทำตามเคล็ดลับ

สิ่งที่ได้ผลในที่สุดคือการเพิ่มuniverserepo ในรายการ repo ของฉัน ให้รันคำสั่งต่อไปนี้

sudo add-apt-repository universe

หลังจากเรียกใช้คำสั่งข้างต้นฉันสามารถเรียกใช้

sudo apt install openjdk-8-jre

โดยไม่มีปัญหาและติดตั้งแพคเกจแล้ว

หวังว่านี่จะช่วยใครบางคนได้


ไม่แน่ใจว่าทำไมฉันจึงถูกโหวตให้คำตอบนี้ หากมีบางอย่างไม่ถูกต้องหรือปัญหาที่อาจเกิดขึ้นโปรดแสดงความคิดเห็นเพื่อช่วยให้ผู้อื่นและตัวฉันเข้าใจดีขึ้น
Daniel Black

0

หลังจากเพิ่มJDKrepo แล้วก่อนการติดตั้งคุณอาจต้องการเรียกใช้การอัปเดตก่อนเพื่อให้สามารถเพิ่ม repo ได้ apt update

จากนั้นดำเนินการติดตั้งต่อ sudo apt install adoptopenjdk-8-hotspot

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.