การตั้งค่า JDK 7 เป็นค่าเริ่มต้น


83
 four@twenty:~$ file /etc/alternatives/java /etc/alternatives/javac
 /etc/alternatives/java:symbolic link to `/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'
 /etc/alternatives/javac:symbolic link to `/usr/lib/jvm/java-6-openjdk-amd64/bin/javac'

ให้อภัยความอึกทึกของฉัน แต่ฉันตีความข้อความเหล่านี้เป็นสภาพแวดล้อมรันไทม์โดยใช้ Java 7 แต่คอมไพเลอร์ใช้ Java 6?

ถูกต้องหรือไม่และถ้าเป็นเช่นนั้นฉันจะตั้งให้ใช้ Java เวอร์ชัน 7 ได้อย่างไร

คำตอบ:


155

การสลับระหว่างเวอร์ชัน Java ที่ติดตั้งสามารถทำได้โดยใช้update alternativesคำสั่ง

  • ในการรับรายการแพลตฟอร์ม Java ที่ติดตั้งให้รันคำสั่งต่อไปนี้จากเทอร์มินัล:

    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-6-oracle/jre/bin/java         1070      auto mode
      1            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode
    * 2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1069      manual mode
    Press enter to keep the current choice[*], or type selection number: 

ในกรณีนี้เวอร์ชัน Open JDK 6 กำลังทำงาน หากต้องการเปลี่ยนเป็น Open JDK เวอร์ชั่น 7 คุณจะต้องเลือกตัวเลือก1ที่พรอมต์และกดEnterปุ่ม

ตอนนี้คุณจะใช้งาน OpenJDK เวอร์ชั่น 7 ไม่จำเป็นต้องทำการเปลี่ยนแปลงใด ๆ เพื่อสลับเวอร์ชัน Java ของคุณ


โอเคขอบคุณ. ฉันจะได้อะไรจากการถอนการติดตั้ง jkd6 หรือไม่
Wingsuit

@ user142712 ไม่มีปัญหา ฉันเชื่อว่าการถอนการติดตั้งจะลบปลั๊กอินเบราว์เซอร์รุ่นเก่าออกซึ่งเป็นประโยชน์ด้านความปลอดภัย
Kevin Bowen

1
ฉันจะไม่ตอบคำถาม "ไม่มีปัญหา" อย่างรวดเร็ว ตรวจสอบoracle.com/technetwork/java/javase/compatibility-417013.htmlและupstream-tracker.org/java/versions/jdk.html ไม่มีความเข้ากันได้ 100% ระหว่างสองเวอร์ชันหลักและอาจเกิดขึ้นดังนั้น (ไม่น่าเป็นไปได้ แต่ยัง ... ) ที่คุณมีแอปพลิเคชัน X ที่ไม่สามารถทำงานได้อย่างถูกต้องกับรุ่นที่เจ็ด จนกว่าคุณจะตรวจสอบให้แน่ใจว่าจะไม่มีปัญหาฉันขอแนะนำให้เก็บทั้งสองอย่างไว้ในกรณีที่คุณต้องการรุ่นก่อนหน้า
rbaleksandar

เพียงเพื่อให้ชัดเจน ความคิดเห็น "ไม่มีปัญหา" เป็นอีกวิธีหนึ่งของฉันที่บอกว่าคุณยินดีฉันไม่เคยอ้างว่าจะไม่มีปัญหากับการติดตั้ง Java ของคุณ
Kevin Bowen

1
วิธีการแก้ปัญหาปรับปรุงทางเลือกให้โดยคำตอบนี้จะเปลี่ยนJRE เท่านั้น ดูด้านล่างสำหรับวิธีที่เหมาะสมในการสลับJDKทั้งหมด(คอมไพเลอร์และเครื่องมืออื่น ๆ ) ด้วยคำสั่งเดียว
J. Will

15

คำตอบที่โหวตมากที่สุดซึ่งแนะนำให้ใช้

ปรับปรุงทางเลือก

เพียงบางส่วนตอบคำถาม เมื่อใช้มันจะทำให้คุณมีสภาพแวดล้อม Java ที่ไม่สอดคล้องกัน

นี่เป็นสิ่งสำคัญอย่างยิ่งหากคุณมี JDK ไม่ใช่ JRE

[sudo] ตัวเลือกการอัพเดท --config java

จะเปลี่ยนเวอร์ชั่นสำหรับjavaคำสั่งเท่านั้นเช่น repoint ไฟล์หลักของ JRE

javacและเครื่องมือ JDK อื่น ๆ จะยังคงชี้ไปที่รุ่นจาวาอื่น ๆ หากต้องการเปลี่ยนอย่างสมบูรณ์คุณจะต้องดำเนินการต่อด้วยupdate-alternativesเครื่องมืออื่น ๆ ทั้งหมด

วิธีที่เหมาะสมและง่ายกว่าในการสลับเวอร์ชั่น Java ในระบบ Linux ด้วย "ทางเลือก" - เช่นใน Debian หรืออนุพันธ์ของ Ubuntu - คือการใช้ คำสั่งupdate-java-Alternatives

update-java-ทางเลือก -l - จะแสดงรายการเวอร์ชัน Java ที่ติดตั้ง

[sudo] update-java-ทางเลือก -s - จะเปลี่ยนเป็นเวอร์ชั่นที่ร้องขอ

แหล่ง


นี้! ขอบคุณมาก. ฉันหวังว่าฉันจะให้คะแนนอินเทอร์เน็ตแก่คุณมากกว่านี้ แต่ฉันยังคิดว่าฉันยังไม่มี
Nenotlep

10

คุณสามารถเรียกใช้sudo update-alternatives --config javaและเลือก JDK 7 หากติดตั้งแล้ว


โอเคไชโยมันบอกว่าฉันมี JKD7 สองสถานะติดตั้งหนึ่งรายการโดยอัตโนมัติคู่มืออื่น ๆ มีความแตกต่างหรือไม่?
Wingsuit

มีข้อมูลที่นี่: linux.die.net/man/8/update-alternativesแต่ฉันต้องการเลือกอัตโนมัติ
Frederik Spang

"แต่ละกลุ่มลิงก์ในเวลาใดก็ตามในหนึ่งในสองโหมด: อัตโนมัติหรือด้วยตนเองเมื่อกลุ่มอยู่ในโหมดอัตโนมัติระบบทางเลือกจะตัดสินใจโดยอัตโนมัติเมื่อมีการติดตั้งและลบแพคเกจไม่ว่าจะปรับปรุงลิงค์หรือไม่ ในโหมดแมนนวลระบบทางเลือกจะไม่เปลี่ยนการเชื่อมโยงซึ่งจะทำให้การตัดสินใจทั้งหมดไปยังผู้ดูแลระบบ "
mpen

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