วิธีการตั้งค่าเวอร์ชัน Java เริ่มต้น?


124

ฉันทำตามคำแนะนำทั้งหมดที่ระบุในคำถามนี้แต่ฉันกำลังพบปัญหาบางอย่างกับส่วนสุดท้ายของมัน

จริง ๆ แล้วฉันมีรุ่น 6.22 ของจาวาและต้องการอัปเดตเป็นรุ่น 6.30

ดังนั้นหลังจากย้ายไดเรคทอรี่ที่แยกjava-6-oracleไป/usr/lib/jvmแล้วฉันไม่ทราบว่าต้องทำอย่างไรเนื่องจากสคริปต์ที่ระบุไว้ในคำตอบข้างบนอัปเดตจากจาวา 5 ไปยังจาวา 6

เพื่อความชัดเจนนี่คือผลลัพธ์ถ้าฉันทำlsใน dir /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

สิ่งที่ฉันควรทำตอนนี้?


ส่วนที่เพิ่ม

ภายใต้ข้อเสนอแนะของ @fossfreedom ฉันรันสคริปต์อยู่แล้วและจริง ๆ แล้วมันอัปเดตเวอร์ชันจาวา

ในความเป็นจริงหากฉันรันjava -versionเอาต์พุตคำสั่งจะเป็นดังนี้:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

นอกจากนี้ยังคงเป็นปัญหาถ้า Irun javac -versionมันทำให้ฉันรุ่นเก่าที่ติดตั้ง:

$ javac -version
javac 1.6.0_22

และถ้าฉันใช้ตัวทดสอบที่ลิงค์นี้มันจะบอกฉันว่ารุ่นนั้นคืออะไร

Java Version 1.6.0_22 from Sun Microsystems Inc.

เกิดอะไรขึ้น

ดูเหมือนว่า Java Runtime Environment ได้อัปเดตแล้ว แต่ Java Compiler และ Java plugin สำหรับเบราว์เซอร์ยังไม่มี

ฉันจะอัพเดทได้อย่างไร


ส่วนที่เพิ่มอื่น ๆ

sudo update-alternatives --config 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.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

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

สิ่งเหล่านี้เหมาะสมกับข้อเท็จจริงที่ว่า JRE ได้รับการอัปเดตอย่างถูกต้องเป็นเวอร์ชั่น 6.31 ปัญหาอยู่ใน Java Compiler และปลั๊กอินของเบราว์เซอร์ Java

ความคิดใด ๆ


@fossfreedom ฉันไม่ได้ลองเพราะฉันคิดว่ามันไม่ควรเขียนเพราะอัปโหลดจาก Java 5 ถึง 6 ฉันควรทำยังไงดี?
Matteo

1
hmmm - คุณอาจสับสนว่าสคริปต์ webupd8 นั้นมีขนาด 0.5b หรือไม่ นั่นคือเวอร์ชันของสคริปต์ - มันไม่ได้อ้างถึงเวอร์ชันของจาวา ให้มันลอง. ให้ดูภาพหน้าจอที่มีลักษณะเหมือนหน้าต่างเมื่อคุณเรียกใช้สคริปต์
fossfreedom

@fossfreedom ใช่ว่าฉันสับสนโดยสิ้นเชิง DI วิ่งสคริปต์! ! ตรวจสอบการแก้ไขในคำถาม thks มากที่ช่วยฉัน ..
มัตเตโอ

ช่างน่าประหลาดใจเหลือเกิน ... อย่างไรก็ตาม - ดูคำตอบด้านล่าง - คุณควรจะสามารถsudo update-alternativesตามตัวอย่าง
fossfreedom

@fossfreedom อัพเดทคำถามอีกครั้ง!
Matteo

คำตอบ:


103

ตอบคำถามแรกของคุณ:

อาจเป็นไปได้ว่าคุณอาจสับสนว่าสคริปต์ webupd8 คือ 0.5b นั่นคือเวอร์ชันของสคริปต์ - มันไม่ได้อ้างถึงเวอร์ชันของจาวา

เพิ่มเติมจากการตั้งค่าเวอร์ชัน javac

ฉันสงสัยว่าคุณต้องให้เส้นทางของคอมไพเลอร์ javac อย่างชัดเจน

กล่าวคือ

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

ติดตามโดย:

sudo update-alternatives --config javac

เกี่ยวกับการตั้งค่าปลั๊กอิน Java chrome

คำถามหลัก:

ฉันจะติดตั้ง Oracle JDK 6 ได้อย่างไร

รวมถึงข้อมูลนี้ - เนื่องจากโครงสร้างโฟลเดอร์ของคุณแตกต่างกันเล็กน้อยคำสั่งลิงก์ของคุณควรเป็น:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

ด้วยตัวเองนี่แค่เปลี่ยนคอมไพเลอร์ - ดูคำตอบด้านล่างสำหรับ update-java-ทางเลือกที่จัดการการสลับทางเลือกทั้งหมดที่เกี่ยวข้องกับ java ซึ่งเป็น 82 ในระบบของฉัน
Greg

55

ดูนี้ ; วิ่ง

sudo  update-java-alternatives --list

เพื่อแสดงรายการการติดตั้ง Java ทั้งหมดบนเครื่องตามชื่อและไดเรกทอรีจากนั้นเรียกใช้

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

เพื่อเลือก JRE / JDK ที่จะใช้

หากคุณต้องการใช้ JDKs / JREs ที่แตกต่างกันสำหรับแต่ละงาน Java คุณสามารถเรียกใช้ทางเลือกการอัปเดตเพื่อกำหนดค่า java executable ได้ครั้งละหนึ่งตัว คุณสามารถเรียกใช้

sudo  update-alternatives --config java[Tab]

เพื่อดูคำสั่ง Java ที่สามารถกำหนดค่าได้ (java, javac, javah, javaws ฯลฯ ) และจากนั้น

sudo  update-alternatives --config [javac|java|javadoc|etc.]

จะเชื่อมโยงงาน / คำสั่ง Java นั้นกับ JDK / JRE ที่เจาะจง

คุณอาจต้องตั้งค่า JAVA_HOME สำหรับบางแอปพลิเคชัน: จากคำตอบนี้คุณสามารถใช้ได้

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

สำหรับ JREs หรือ

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

สำหรับ JDK


25

ฉันคิดว่าคุณควรดูupdate-java-alternativesคำสั่งจากjava-commonแพ็คเกจและ*.jinfoไฟล์ที่ใช้ ด้วยสิ่งที่คุณควรจะสามารถสลับอย่างสมบูรณ์ระหว่างการติดตั้งจาวา (โดยไม่คำนึงถึง JDK, JRE, ... )


2
ฉันลองupdate-java-alternativesแล้วjava -versionถูกต้อง แต่ลิงก์ใน$JAVA_HOMEยังคงผิด ... ฉันเปลี่ยนมันด้วยตนเอง แต่ฉันสงสัยว่ามีบางอย่างขาดหายไปในupdate-java-alternativesเรื่องนั้นหรือไม่
Alexis Wilke

7

บน ubuntu / linux คุณสามารถสลับรุ่น java ได้โดยใช้

update-alternatives --config java

แต่ก่อนหน้านี้คุณต้องติดตั้งเวอร์ชัน

คุณสามารถใช้สคริปต์นี้ (./install-java.sh) เพื่อติดตั้ง JVM หลายรายการ

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

วางสคริปต์นี้ในโฟลเดอร์ที่แกะกล่อง JVM ออกแล้วรัน:

/opt/install-java.sh

ใช้ครั้งต่อไป:

update-alternatives --config java

1

หากคุณกำลังจะตั้งค่าทางเลือกอื่น ๆ สำหรับ javac javaws javadoc หรือคำสั่งอื่น ๆ ที่เกี่ยวข้องกับ java คุณอาจต้องการทำให้พวกเขาเป็นทาสของ java altenative

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - ลิงก์โหมดอัตโนมัติรุ่นที่ดีที่สุดคือ /opt/jdk1.8.0_74/bin/java ลิงก์ชี้ไปที่ /opt/jdk1.8.0_74/bin/java ลิงก์ java คือ / usr / bin / java ทาส javadoc คือ / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - ลำดับความสำคัญ 0 ทาส javadoc: /opt/jdk1.8.0_74/bin/javadoc

เปลี่ยน /opt/jdk1.8.0_74/ ด้วย dir ที่ติดตั้ง jdk ของคุณ


0

เปิด/etc/environmentในเครื่องมือแก้ไขข้อความของคุณและเพิ่มบรรทัดต่อไปนี้:

JAVA_HOME="usr/lib/jvm/open-jdk 

- เส้นทาง Java อาจแตกต่างกัน
ใช้ซอร์สเพื่อโหลดตัวแปรโดยการรันคำสั่งนี้:

source /etc/environment

จากนั้นตรวจสอบตัวแปรโดยเรียกใช้คำสั่งนี้:

echo $JAVA_HOME

ด้วยชุดของเส้นทางนี้ให้รันคำสั่งนี้:

sudo  update-java-alternatives --list

เลือกเวอร์ชัน Java เริ่มต้นของคุณ

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