ฉันจะทำให้ Java เป็นค่าเริ่มต้นสำหรับ JRE / JDK ที่ติดตั้งด้วยตนเองได้อย่างไร


54

ฉันติดตั้ง Ubuntu 12.04 amd64 บนเครื่องของฉันใน Ubuntu รุ่นก่อนหน้านี้มันเป็นเรื่องง่ายมากตอนนี้มีคำสั่งนี้update-java-alternativesพร้อมกับหน้าคนเลวจริงๆ

ฉันเพิ่งเปิด JDK ของฉันบนพาร์ติชันที่เมาท์/media/mydisk/jdkแล้วฉันจะบังคับให้ใช้ JDK นั้นได้อย่างไรแทนที่จะเป็นอันที่มาในที่เก็บ Ubuntu?

เหตุผลเบื้องหลังนี้update-java-alternativesคืออะไร?


สคริปต์เพื่อสลับไปมาระหว่าง jdks: github.com/gayanW/dotfiles/tree/master/java
Gayan Weerakutti

คำตอบ:


30

หมายเหตุ: update-java-alternativesจะไม่ทำงานกับการติดตั้งด้วยตนเอง ไม่ว่าในกรณีใด ๆ ดูเหมือนว่ามันจะมีความสามารถพิเศษที่update-alternativesไม่ได้มียกเว้นความสะดวกสบาย

ในฐานะทางเลือกกราฟิกของวิธีการบรรทัดคำสั่ง @ AnwarShah ให้ลองใช้Gnome Alternatives ( sudo apt-get install galternatives):

  • เริ่มGAlternativesเลือกแต่ละตัวเลือกjavaเปลี่ยนเป็นด้วยตนเองและเพิ่มทางเลือกของคุณ (ตัวอย่างนี่คือ IBM JRE ติดตั้งในโฮมไดเร็กทอรีของฉัน):

    ป้อนคำอธิบายรูปภาพที่นี่

    ป้อนคำอธิบายรูปภาพที่นี่

    ป้อนคำอธิบายรูปภาพที่นี่


41

คุณสามารถทำได้ด้วยsudo update-alternatives:

# Adding a new alternative for "java".
sudo update-alternatives --install /usr/bin/java java /media/mydisk/jdk/bin/java 1

# Setting the new alternative as default for "java".
sudo update-alternatives --config java

คุณต้องทำสิ่งนี้สำหรับองค์ประกอบ jdk อื่น ๆ ด้วย องค์ประกอบเหล่านี้มีappletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, javaws, jconsole, jdb, jexec, jhat, jinfo, jmap, jps, jrunscript, jsadebugd, jstack, jstat, jstatd, keytool, mozilla-javaplugin.so, native2ascii, orbd, pack200, policytool, rmic, rmid, rmiregistry, schemagen, serialver, servertool, tnameserv, unpack200, wsgen, ,wsimportxjc

สอบถามข้อมูลเพิ่มเติมที่คุณสามารถดูหน้าคนสำหรับ:update-alternativesman update-alternatives

คำสั่งupdate-java-alternativesตั้งทางเลือกสำหรับองค์ประกอบของจาวาและดูเหมือนว่าจะใช้update-alternativesสำหรับการนี้

แก้ไข:คำตอบข้างต้นเป้าหมาย Java 6

  • สำหรับ Java 7 คุณต้องเพิ่มjcmdไปยังรายการ Java 6
  • สำหรับ Java 8 คุณต้องเพิ่มjcmd, jjsและjdepsกับ Java 6 รายการ
  • สำหรับ Java 9 คุณจะต้องเพิ่มjcmd, jjs, jdepsและjshellกับ Java 6 รายการ

ดูเหมือนคำตอบมากมายที่นี่พูดถึงชุดย่อยต่าง ๆ ของไฟล์จาวาที่ต้องติดตั้ง คำตอบนี้โดย @ air-dex ยกตัวอย่างเช่นกล่าวถึงกลุ่มทั้งหมด ใครช่วยบอกฉันว่าฉันต้องติดตั้งอะไรด้วยการโทรอัปเดตทางเลือก ฉันจะหาข้อมูลเกี่ยวกับสิ่งนี้ได้ที่ไหน
มัส

@thomas ติดตั้งทางเลือกทั้งหมดที่ฉันพูดถึงที่นี่ผ่านทางเลือกอัปเดต รายการของฉันมีคำสั่ง Java ทั้งหมดของ JDK
air-dex

1
ดูที่ส่วนประกอบ JDK เหล่านี้: orbd, pack200, คุณอาจต้องการเปลี่ยนสิ่งเหล่านั้นด้วย
Jaroslav Záruba

24

jdk1.6.0_25ที่จริงผมใช้คำสั่งนี้เพื่อติดตั้ง (ตรวจสอบลิงค์ด้านล่างเพื่อดูสคริปต์การอัพเดททางเลือกที่สมบูรณ์)

sudo update-alternatives --install /usr/bin/java java /media/mydisk/jdk/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /media/mydisk/jdk/javac 100
sudo update-alternatives --install /usr/bin/java_vm java_vm /media/mydisk/jdk/bin/java_vm 100
sudo update-alternatives --install /usr/bin/jcontrol jcontrol /media/mydisk/jdk/bin/jcontrol 100
sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100
sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100 --slave /usr/share/binfmts/jar jexec-binfmt media/mydisk/jdk/jre/lib/javaws

จากนั้นคุณสามารถใช้คำสั่งเหล่านี้เพื่อตั้งเป็นค่าเริ่มต้น ส่วนใหญ่อาจเป็นสิ่งที่ไม่จำเป็น

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config java_vm
sudo update-alternatives --config jcontrol
sudo update-alternatives --config jexec

คุณสามารถรับความช่วยเหลือเพิ่มเติมได้โดยใช้คำสั่งman update-alternativesหรือดูคู่มือในเบราว์เซอร์ของคุณที่นี่

วัตถุประสงค์ของการupdate-java-alternativesอธิบายในหน้าคู่มือคือ

update-java-alternatives อัพเดตทางเลือกทั้งหมดที่เป็นของหนึ่ง runtime หรือชุดพัฒนาสำหรับภาษา Java แพ็คเกจจะให้ข้อมูลเหล่านี้เกี่ยวกับทางเลือกใน/usr/lib/jvm/.<jname>.jinfo.

เครื่องมือ jdk ทั้งหมดนั้น

appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc

หวังว่านี่จะช่วยคุณได้


ปรับปรุง

ฉันใช้สคริปต์นี้เพื่อแยก jdk ที่ดาวน์โหลดมาและใช้update-alternativesเพื่อตั้งค่าอย่างสมบูรณ์ แก้ไขชื่อไฟล์ jdk และJAVA_DIRเพื่อให้เหมาะกับความต้องการของคุณ JAVA_DIRเป็นเส้นทางไปของคุณสกัดโฟลเดอร์ jdk

#!/bin/sh

JAVA_DIR=/usr/lib/jvm/jdk1.8.0_65

# extract a jdk file named `jdk-8u65-linux-x64.tar.gz` from current directory to `/usr/lib/jvm`
sudo tar xvf jdk-8u65-linux-x64.tar.gz -C /usr/lib/jvm/

# update alternative links
sudo update-alternatives --quiet --install /usr/lib/xulrunner-addons/plugins/libjavaplugin.so xulrunner-1.9-javaplugin.so $JAVA_DIR/jre/lib/amd64/libnpjp2.so 100
sudo update-alternatives --quiet --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so $JAVA_DIR/jre/lib/amd64/libnpjp2.so 100
sudo update-alternatives --quiet --install /usr/bin/appletviewer appletviewer $JAVA_DIR/bin/appletviewer 100 --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 $JAVA_DIR/man/man1/appletviewer.1
sudo update-alternatives --quiet --install /usr/bin/apt apt $JAVA_DIR/bin/apt 100 --slave /usr/share/man/man1/apt.1 apt.1 $JAVA_DIR/man/man1/apt.1
sudo update-alternatives --quiet --install /usr/bin/extcheck extcheck $JAVA_DIR/bin/extcheck 100 --slave /usr/share/man/man1/extcheck.1 extcheck.1 $JAVA_DIR/man/man1/extcheck.1
sudo update-alternatives --quiet --install /usr/bin/idlj idlj $JAVA_DIR/bin/idlj 100 --slave /usr/share/man/man1/idlj.1 idlj.1 $JAVA_DIR/man/man1/idlj.1
sudo update-alternatives --quiet --install /usr/bin/jar jar $JAVA_DIR/bin/jar 100 --slave /usr/share/man/man1/jar.1 jar.1 $JAVA_DIR/man/man1/jar.1
sudo update-alternatives --quiet --install /usr/bin/jarsigner jarsigner $JAVA_DIR/bin/jarsigner 100 --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 $JAVA_DIR/man/man1/jarsigner.1
sudo update-alternatives --quiet --install /usr/bin/javac javac $JAVA_DIR/bin/javac 100 --slave /usr/share/man/man1/javac.1 javac.1 $JAVA_DIR/man/man1/javac.1
sudo update-alternatives --quiet --install /usr/bin/javadoc javadoc $JAVA_DIR/bin/javadoc 100 --slave /usr/share/man/man1/javadoc.1 javadoc.1 $JAVA_DIR/man/man1/javadoc.1
sudo update-alternatives --quiet --install /usr/bin/javah javah $JAVA_DIR/bin/javah 100 --slave /usr/share/man/man1/javah.1 javah.1 $JAVA_DIR/man/man1/javah.1
sudo update-alternatives --quiet --install /usr/bin/javap javap $JAVA_DIR/bin/javap 100 --slave /usr/share/man/man1/javap.1 javap.1 $JAVA_DIR/man/man1/javap.1
sudo update-alternatives --quiet --install /usr/bin/jconsole jconsole $JAVA_DIR/bin/jconsole 100 --slave /usr/share/man/man1/jconsole.1 jconsole.1 $JAVA_DIR/man/man1/jconsole.1
sudo update-alternatives --quiet --install /usr/bin/jdb jdb $JAVA_DIR/bin/jdb 100 --slave /usr/share/man/man1/jdb.1 jdb.1 $JAVA_DIR/man/man1/jdb.1
sudo update-alternatives --quiet --install /usr/bin/jhat jhat $JAVA_DIR/bin/jhat 100 --slave /usr/share/man/man1/jhat.1 jhat.1 $JAVA_DIR/man/man1/jhat.1
sudo update-alternatives --quiet --install /usr/bin/jinfo jinfo $JAVA_DIR/bin/jinfo 100 --slave /usr/share/man/man1/jinfo.1 jinfo.1 $JAVA_DIR/man/man1/jinfo.1
sudo update-alternatives --quiet --install /usr/bin/jmap jmap $JAVA_DIR/bin/jmap 100 --slave /usr/share/man/man1/jmap.1 jmap.1 $JAVA_DIR/man/man1/jmap.1
sudo update-alternatives --quiet --install /usr/bin/jps jps $JAVA_DIR/bin/jps 100 --slave /usr/share/man/man1/jps.1 jps.1 $JAVA_DIR/man/man1/jps.1
sudo update-alternatives --quiet --install /usr/bin/jrunscript jrunscript $JAVA_DIR/bin/jrunscript 100 --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 $JAVA_DIR/man/man1/jrunscript.1
sudo update-alternatives --quiet --install /usr/bin/jsadebugd jsadebugd $JAVA_DIR/bin/jsadebugd 100 --slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 $JAVA_DIR/man/man1/jsadebugd.1
sudo update-alternatives --quiet --install /usr/bin/jstack jstack $JAVA_DIR/bin/jstack 100 --slave /usr/share/man/man1/jstack.1 jstack.1 $JAVA_DIR/man/man1/jstack.1
sudo update-alternatives --quiet --install /usr/bin/jstat jstat $JAVA_DIR/bin/jstat 100 --slave /usr/share/man/man1/jstat.1 jstat.1 $JAVA_DIR/man/man1/jstat.1
sudo update-alternatives --quiet --install /usr/bin/jstatd jstatd $JAVA_DIR/bin/jstatd 100 --slave /usr/share/man/man1/jstatd.1 jstatd.1 $JAVA_DIR/man/man1/jstatd.1
sudo update-alternatives --quiet --install /usr/bin/native2ascii native2ascii $JAVA_DIR/bin/native2ascii 100 --slave /usr/share/man/man1/native2ascii.1 native2ascii.1 $JAVA_DIR/man/man1/native2ascii.1
sudo update-alternatives --quiet --install /usr/bin/rmic rmic $JAVA_DIR/bin/rmic 100 --slave /usr/share/man/man1/rmic.1 rmic.1 $JAVA_DIR/man/man1/rmic.1
sudo update-alternatives --quiet --install /usr/bin/schemagen schemagen $JAVA_DIR/bin/schemagen 100 --slave /usr/share/man/man1/schemagen.1 schemagen.1 $JAVA_DIR/man/man1/schemagen.1
sudo update-alternatives --quiet --install /usr/bin/serialver serialver $JAVA_DIR/bin/serialver 100 --slave /usr/share/man/man1/serialver.1 serialver.1 $JAVA_DIR/man/man1/serialver.1
sudo update-alternatives --quiet --install /usr/bin/wsgen wsgen $JAVA_DIR/bin/wsgen 100 --slave /usr/share/man/man1/wsgen.1 wsgen.1 $JAVA_DIR/man/man1/wsgen.1
sudo update-alternatives --quiet --install /usr/bin/wsimport wsimport $JAVA_DIR/bin/wsimport 100 --slave /usr/share/man/man1/wsimport.1 wsimport.1 $JAVA_DIR/man/man1/wsimport.1
sudo update-alternatives --quiet --install /usr/bin/xjc xjc $JAVA_DIR/bin/xjc 100 --slave /usr/share/man/man1/xjc.1 xjc.1 $JAVA_DIR/man/man1/xjc.1
sudo update-alternatives --quiet --install /usr/bin/java-rmi.cgi java-rmi.cgi $JAVA_DIR/bin/java-rmi.cgi 100
sudo update-alternatives --quiet --install /usr/bin/ControlPanel ControlPanel $JAVA_DIR/jre/bin/ControlPanel 100
sudo update-alternatives --quiet --install /usr/bin/java java $JAVA_DIR/jre/bin/java 100
sudo update-alternatives --quiet --install /usr/bin/java_vm java_vm $JAVA_DIR/jre/bin/java_vm 100
sudo update-alternatives --quiet --install /usr/bin/javaws javaws $JAVA_DIR/jre/bin/javaws 100
sudo update-alternatives --quiet --install /usr/bin/jcontrol jcontrol $JAVA_DIR/jre/bin/jcontrol 100
sudo update-alternatives --quiet --install /usr/bin/keytool keytool $JAVA_DIR/jre/bin/keytool 100
sudo update-alternatives --quiet --install /usr/bin/pack200 pack200 $JAVA_DIR/jre/bin/pack200 100
sudo update-alternatives --quiet --install /usr/bin/policytool policytool $JAVA_DIR/jre/bin/policytool 100
sudo update-alternatives --quiet --install /usr/bin/rmid rmid $JAVA_DIR/jre/bin/rmid 100
sudo update-alternatives --quiet --install /usr/bin/rmiregistry rmiregistry $JAVA_DIR/jre/bin/rmiregistry 100
sudo update-alternatives --quiet --install /usr/bin/unpack200 unpack200 $JAVA_DIR/jre/bin/unpack200 100
sudo update-alternatives --quiet --install /usr/bin/orbd orbd $JAVA_DIR/jre/bin/orbd 100
sudo update-alternatives --quiet --install /usr/bin/servertool servertool $JAVA_DIR/jre/bin/servertool 100
sudo update-alternatives --quiet --install /usr/bin/tnameserv tnameserv $JAVA_DIR/jre/bin/tnameserv 100
sudo update-alternatives --quiet --install /usr/bin/jexec jexec $JAVA_DIR/jre/lib/jexec 100

ควรพบ javac ใต้ / media / mydisk / jdk / bin / javac
Jonathan Neufeld

3

คุณสามารถใช้สคริปต์ทุบตีนี้:

#!/bin/bash

export JDK_INSTALL=/opt/jdk1.8.0_112
#export JDK_INSTALL=/opt/jdk1.7.0_25
#export JDK_INSTALL=/opt/jdk1.6.0_45


#JDK 6 and above

sudo update-alternatives --install /usr/bin/appletviewer appletviewer $JDK_INSTALL/bin/appletviewer 1
sudo update-alternatives --install /usr/bin/extcheck extcheck $JDK_INSTALL/bin/extcheck 1
sudo update-alternatives --install /usr/bin/idlj idlj $JDK_INSTALL/bin/idlj 1
sudo update-alternatives --install /usr/bin/jar jar $JDK_INSTALL/bin/jar 1
sudo update-alternatives --install /usr/bin/jarsigner jarsigner $JDK_INSTALL/bin/jarsigner 1
sudo update-alternatives --install /usr/bin/java java $JDK_INSTALL/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac $JDK_INSTALL/bin/javac 1
sudo update-alternatives --install /usr/bin/javadoc javadoc $JDK_INSTALL/bin/javadoc 1
sudo update-alternatives --install /usr/bin/javah javah $JDK_INSTALL/bin/javah 1
sudo update-alternatives --install /usr/bin/javap javap $JDK_INSTALL/bin/javap 1
sudo update-alternatives --install /usr/bin/javaws javaws $JDK_INSTALL/bin/javaws 1
sudo update-alternatives --install /usr/bin/jconsole jconsole $JDK_INSTALL/bin/jconsole 1
sudo update-alternatives --install /usr/bin/jdb jdb $JDK_INSTALL/bin/jdb 1
sudo update-alternatives --install /usr/bin/jhat jhat $JDK_INSTALL/bin/jhat 1
sudo update-alternatives --install /usr/bin/jinfo jinfo $JDK_INSTALL/bin/jinfo 1
sudo update-alternatives --install /usr/bin/jmap jmap $JDK_INSTALL/bin/jmap 1
sudo update-alternatives --install /usr/bin/jps jps $JDK_INSTALL/bin/jps 1
sudo update-alternatives --install /usr/bin/jrunscript jrunscript $JDK_INSTALL/bin/jrunscript 1
sudo update-alternatives --install /usr/bin/jsadebugd jsadebugd $JDK_INSTALL/bin/jsadebugd 1
sudo update-alternatives --install /usr/bin/jstack jstack $JDK_INSTALL/bin/jstack 1
sudo update-alternatives --install /usr/bin/jstat jstat $JDK_INSTALL/bin/jstat 1
sudo update-alternatives --install /usr/bin/jstatd jstatd $JDK_INSTALL/bin/jstatd 1
sudo update-alternatives --install /usr/bin/keytool keytool $JDK_INSTALL/bin/keytool 1
sudo update-alternatives --install /usr/bin/native2ascii native2ascii $JDK_INSTALL/bin/native2ascii 1
sudo update-alternatives --install /usr/bin/orbd orbd $JDK_INSTALL/bin/orbd 1
sudo update-alternatives --install /usr/bin/pack200 pack200 $JDK_INSTALL/bin/pack200 1
sudo update-alternatives --install /usr/bin/policytool policytool $JDK_INSTALL/bin/policytool 1
sudo update-alternatives --install /usr/bin/rmic rmic $JDK_INSTALL/bin/rmic 1
sudo update-alternatives --install /usr/bin/rmid rmid $JDK_INSTALL/bin/rmid 1
sudo update-alternatives --install /usr/bin/rmiregistry rmiregistry $JDK_INSTALL/bin/rmiregistry 1
sudo update-alternatives --install /usr/bin/schemagen schemagen $JDK_INSTALL/bin/schemagen 1
sudo update-alternatives --install /usr/bin/serialver serialver $JDK_INSTALL/bin/serialver 1
sudo update-alternatives --install /usr/bin/servertool servertool $JDK_INSTALL/bin/servertool 1
sudo update-alternatives --install /usr/bin/tnameserv tnameserv $JDK_INSTALL/bin/tnameserv 1
sudo update-alternatives --install /usr/bin/unpack200 unpack200 $JDK_INSTALL/bin/unpack200 1
sudo update-alternatives --install /usr/bin/wsgen wsgen $JDK_INSTALL/bin/wsgen 1
sudo update-alternatives --install /usr/bin/wsimport wsimport $JDK_INSTALL/bin/wsimport 1
sudo update-alternatives --install /usr/bin/xjc xjc $JDK_INSTALL/bin/xjc 1

sudo update-alternatives --set appletviewer $JDK_INSTALL/bin/appletviewer
sudo update-alternatives --set extcheck $JDK_INSTALL/bin/extcheck
sudo update-alternatives --set idlj $JDK_INSTALL/bin/idlj
sudo update-alternatives --set jar $JDK_INSTALL/bin/jar
sudo update-alternatives --set jarsigner $JDK_INSTALL/bin/jarsigner
sudo update-alternatives --set java $JDK_INSTALL/bin/java
sudo update-alternatives --set javac $JDK_INSTALL/bin/javac
sudo update-alternatives --set javadoc $JDK_INSTALL/bin/javadoc
sudo update-alternatives --set javah $JDK_INSTALL/bin/javah
sudo update-alternatives --set javap $JDK_INSTALL/bin/javap
sudo update-alternatives --set javaws $JDK_INSTALL/bin/javaws
sudo update-alternatives --set jconsole $JDK_INSTALL/bin/jconsole
sudo update-alternatives --set jdb $JDK_INSTALL/bin/jdb
sudo update-alternatives --set jhat $JDK_INSTALL/bin/jhat
sudo update-alternatives --set jinfo $JDK_INSTALL/bin/jinfo
sudo update-alternatives --set jmap $JDK_INSTALL/bin/jmap
sudo update-alternatives --set jps $JDK_INSTALL/bin/jps
sudo update-alternatives --set jrunscript $JDK_INSTALL/bin/jrunscript
sudo update-alternatives --set jsadebugd $JDK_INSTALL/bin/jsadebugd
sudo update-alternatives --set jstack $JDK_INSTALL/bin/jstack
sudo update-alternatives --set jstat $JDK_INSTALL/bin/jstat
sudo update-alternatives --set jstatd $JDK_INSTALL/bin/jstatd
sudo update-alternatives --set keytool $JDK_INSTALL/bin/keytool
sudo update-alternatives --set native2ascii $JDK_INSTALL/bin/native2ascii
sudo update-alternatives --set orbd $JDK_INSTALL/bin/orbd
sudo update-alternatives --set pack200 $JDK_INSTALL/bin/pack200
sudo update-alternatives --set policytool $JDK_INSTALL/bin/policytool
sudo update-alternatives --set rmic $JDK_INSTALL/bin/rmic
sudo update-alternatives --set rmid $JDK_INSTALL/bin/rmid
sudo update-alternatives --set rmiregistry $JDK_INSTALL/bin/rmiregistry
sudo update-alternatives --set schemagen $JDK_INSTALL/bin/schemagen
sudo update-alternatives --set serialver $JDK_INSTALL/bin/serialver
sudo update-alternatives --set servertool $JDK_INSTALL/bin/servertool
sudo update-alternatives --set tnameserv $JDK_INSTALL/bin/tnameserv
sudo update-alternatives --set unpack200 $JDK_INSTALL/bin/unpack200
sudo update-alternatives --set wsgen $JDK_INSTALL/bin/wsgen
sudo update-alternatives --set wsimport $JDK_INSTALL/bin/wsimport
sudo update-alternatives --set xjc $JDK_INSTALL/bin/xjc


#JDK 7 and above

sudo update-alternatives --install /usr/bin/jcmd jcmd $JDK_INSTALL/bin/jcmd 1

sudo update-alternatives --set jcmd $JDK_INSTALL/bin/jcmd


#JDK 8 only

sudo update-alternatives --install /usr/bin/jjs jjs $JDK_INSTALL/bin/jjs 1
sudo update-alternatives --install /usr/bin/jdeps jdeps $JDK_INSTALL/bin/jdeps 1

sudo update-alternatives --set jjs $JDK_INSTALL/bin/jjs
sudo update-alternatives --set jdeps $JDK_INSTALL/bin/jdeps

สิ่งนี้จะดูสะอาดตาเหมือนวนวน: /
cricket_007

3

ซับซ้อนเกินไปคำตอบส่วนใหญ่สำหรับฉัน

เริ่มแรก Oracle ตัดสินใจที่จะสามารถติดตั้ง Java ได้หลายเวอร์ชันโดยขึ้นอยู่กับการตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง

มันง่าย แต่ซับซ้อนเกินไปสำหรับผู้ที่ไม่รู้จักตัวแปรเหล่านั้นและบางคนคิดค้น "update-java-ทางเลือก"

"update-java-ทางเลือก" ได้พิสูจน์แล้วว่าเป็นเรื่องง่ายเมื่อทุกอย่างถูกกำหนดค่าสำหรับคุณคุณเพียงแค่ต้องรันโปรแกรมนี้และเลือกรุ่นที่คุณต้องการ

ปัญหาคือโซลูชันนี้ซับซ้อนเกินกว่าจะกำหนดค่าได้หากคุณต้องกำหนดค่าด้วยตัวคุณเอง (คุณต้องกำหนดค่าสำหรับแต่ละคำสั่งของ java ทุกตัว)

คำตอบที่ดีที่สุดคือกลับไปพื้นฐาน

ตั้งค่าใน.bash_profile(สำหรับผู้ใช้ของคุณ) หรือใน/etc/profile(สำหรับผู้ใช้ทุกคน) ตัวแปรต่อไปนี้:

JAVA_HOME=<The home of your new java distribution>

PATH=<The bin directory of your new java distribution>:$PATH

ในกรณีของฉันนี่เป็นสิ่งที่ง่ายยิ่งขึ้น ... ฉันมีไฟล์อยู่ใน/etc/profile.dเนื้อหาต่อไปนี้ (เพิ่งอัปเดตเป็นโครงสร้างไดเรกทอรีใหม่):

export J2SDKDIR=/usr/lib/jvm/jdk1.8.0_121 
export J2REDIR=/usr/lib/jvm/jdk1.8.0_121/jre
export PATH=/usr/lib/jvm/jdk1.8.0_121/bin:/usr/lib/jvm/jdk1.8.0_121/db/bin:/usr/lib/jvm/jdk1.8.0_121/jre/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121
export DERBY_HOME=/usr/lib/jvm/jdk1.8.0_121/db

และนั่นคือทั้งหมด !!!


1

มันไม่ซับซ้อนเหมือนคำตอบอื่น ๆ ที่ทำให้เป็น คุณต้องเพิ่ม java ที่ติดตั้งด้วยตนเองลงในรายการทางเลือกจากนั้นเปลี่ยนเป็น: (แทนที่ jdk1.7.0_79 ด้วยเวอร์ชันของคุณ)

sudo /usr/sbin/alternatives --install /usr/java/jdk1.7.0_79/bin/java 20000
sudo /usr/sbin/alternatives --config java

1
คุณไม่มีสองพารามิเตอร์ในการ - ติดตั้งควรเป็น '/ usr / sbin / ทางเลือก - ติดตั้ง / usr / bin / java java /usr/java/jdk1.7.0_79/bin/java 20000'
gaoithe

1

update-java-ทางเลือกสวยดีจริง ๆ ดังนั้นเพื่อให้มันทำงานกับการติดตั้งด้วยตนเองของฉัน: คัดลอก jdk1.8.0_45 ไปยัง / usr / lib / jvm

cp .java-1.7.0-openjdk-amd64.jinfo .java-1.8.0-u45-amd64.jinfo
ln -s jdk1.8.0_45 java-1.8.0-u45-amd64

จากนั้นฉันใช้เสียงเรียกเข้าสำหรับการค้นหา / แทนที่:

vim .java-1.8.0-u45-amd64.jinfo
:%s/java-7-openjdk-amd64/java-1.8.0-u45-amd64
:wq

ลดลำดับความสำคัญลง 1

: ถอนหายใจ: update-java-ทางเลือกไม่ได้ทำการติดตั้ง แต่อย่างน้อยเราก็มีไฟล์ให้ทำงานด้วย

VirtualBox:/usr/lib/jvm$ cat .java-1.8.0-u45-amd64.jinfo  | perl -e 'while (<>) { @line = split(/\s+/); $filename = $line[1]; $abspath = $line[2]; $abspath =~ /(.*jdk[^\/]+)/; $manpath = $1 . "/man/man1/"; $manfile = "$manpath$filename.1"; if (-f $manfile) { system("sudo gzip $manfile"); } system("sudo update-alternatives --install /usr/bin/$filename $filename $abspath 1070 --slave /usr/share/man/man1/$filename.1.gz $filename.1.gz $manfile.gz"); }'

จากนั้นฉันเลือกการติดตั้งใหม่ของฉัน:

VirtualBox:/usr/lib/jvm$ sudo update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-u45-amd64 1070 /usr/lib/jvm/java-1.8.0-u45-amd64

VirtualBox:/usr/lib/jvm$ sudo update-java-alternatives -s java-1.8.0-u45-amd64

1

ฉันใส่สิ่งที่ @ air-dex และ @Anwar พูดไว้ในสคริปต์ ฉันรู้ว่า @ test30 ยังเขียนสคริปต์ แต่มันซับซ้อนเกินไปสำหรับฉัน (มือใหม่สคริปต์) ที่จะเข้าใจ ฉันคิดว่าฉันโพสต์ไว้ที่นี่ในกรณีที่บางคนอาจพบว่ามีประโยชน์

#!/bin/bash

# Script to update Java defaults. Run as root.

# Adjust according to Java version that you are installing
JDK_DIR_NAME="/opt/java/jdk1.8.0_102"

# All Java tools according to https://docs.oracle.com/javase/8/docs/technotes/tools/unix/intro.html
TOOLS="appletviewer extcheck jar java javac javadoc javah javap jdb jdeps keytool jarsigner policytool kinit klist ktab native2ascii rmic rmiregistry rmid serialver tnameserv idlj orbd servertool javapackager pack200 unpack200 javaws jcmd jconsole jmc jvisualvm schemagen wsgen wsimport xjc jps jstat jstatd jinfo jhat jmap jsadebugd jstack jrunscript"

for TOOL in $TOOLS; do
    CMD1="update-alternatives --install /usr/bin/$TOOL $TOOL $JDK_DIR_NAME/bin/$TOOL 1"
    # echo $CMD1
    $CMD1
    CMD2="update-alternatives --config $TOOL"
    # echo $CMD2
    $CMD2
done

0

ในการตั้งค่าทางเลือก jdk ที่สมบูรณ์สามารถใช้คำสั่งด้านล่าง:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_45/bin/java 2 --slave /usr/bin/appletviewer appletviewer  /usr/lib/jvm/jdk1.7.0_45/bin/appletviewer --slave /usr/bin/java-rmi.cgi java-rmi.cgi  /usr/lib/jvm/jdk1.7.0_45/bin/java-rmi.cgi --slave /usr/bin/jmap jmap  /usr/lib/jvm/jdk1.7.0_45/bin/jmap --slave /usr/bin/jstatd jstatd  /usr/lib/jvm/jdk1.7.0_45/bin/jstatd --slave /usr/bin/policytool policytool  /usr/lib/jvm/jdk1.7.0_45/bin/policytool --slave /usr/bin/servertool servertool  /usr/lib/jvm/jdk1.7.0_45/bin/servertool --slave /usr/bin/apt apt  /usr/lib/jvm/jdk1.7.0_45/bin/apt --slave /usr/bin/javac javac  /usr/lib/jvm/jdk1.7.0_45/bin/javac --slave /usr/bin/jcmd jcmd  /usr/lib/jvm/jdk1.7.0_45/bin/jcmd --slave /usr/bin/jps jps  /usr/lib/jvm/jdk1.7.0_45/bin/jps --slave /usr/bin/jvisualvm jvisualvm  /usr/lib/jvm/jdk1.7.0_45/bin/jvisualvm --slave /usr/bin/rmic rmic  /usr/lib/jvm/jdk1.7.0_45/bin/rmic --slave /usr/bin/tnameserv tnameserv  /usr/lib/jvm/jdk1.7.0_45/bin/tnameserv --slave /usr/bin/extcheck extcheck  /usr/lib/jvm/jdk1.7.0_45/bin/extcheck --slave /usr/bin/javadoc javadoc  /usr/lib/jvm/jdk1.7.0_45/bin/javadoc --slave /usr/bin/jconsole jconsole  /usr/lib/jvm/jdk1.7.0_45/bin/jconsole --slave /usr/bin/jrunscript jrunscript  /usr/lib/jvm/jdk1.7.0_45/bin/jrunscript --slave /usr/bin/keytool keytool  /usr/lib/jvm/jdk1.7.0_45/bin/keytool --slave /usr/bin/rmid rmid  /usr/lib/jvm/jdk1.7.0_45/bin/rmid --slave /usr/bin/unpack200 unpack200  /usr/lib/jvm/jdk1.7.0_45/bin/unpack200 --slave /usr/bin/idlj idlj  /usr/lib/jvm/jdk1.7.0_45/bin/idlj --slave /usr/bin/javafxpackager javafxpackager  /usr/lib/jvm/jdk1.7.0_45/bin/javafxpackager --slave /usr/bin/jdb jdb  /usr/lib/jvm/jdk1.7.0_45/bin/jdb --slave /usr/bin/jsadebugd jsadebugd  /usr/lib/jvm/jdk1.7.0_45/bin/jsadebugd --slave /usr/bin/native2ascii native2ascii  /usr/lib/jvm/jdk1.7.0_45/bin/native2ascii --slave /usr/bin/rmiregistry rmiregistry  /usr/lib/jvm/jdk1.7.0_45/bin/rmiregistry --slave /usr/bin/wsgen wsgen  /usr/lib/jvm/jdk1.7.0_45/bin/wsgen --slave /usr/bin/jar jar  /usr/lib/jvm/jdk1.7.0_45/bin/jar --slave /usr/bin/javah javah  /usr/lib/jvm/jdk1.7.0_45/bin/javah --slave /usr/bin/jhat jhat  /usr/lib/jvm/jdk1.7.0_45/bin/jhat --slave /usr/bin/jstack jstack  /usr/lib/jvm/jdk1.7.0_45/bin/jstack --slave /usr/bin/orbd orbd  /usr/lib/jvm/jdk1.7.0_45/bin/orbd --slave /usr/bin/schemagen schemagen  /usr/lib/jvm/jdk1.7.0_45/bin/schemagen --slave /usr/bin/wsimport wsimport  /usr/lib/jvm/jdk1.7.0_45/bin/wsimport --slave /usr/bin/jarsigner jarsigner  /usr/lib/jvm/jdk1.7.0_45/bin/jarsigner --slave /usr/bin/javap javap  /usr/lib/jvm/jdk1.7.0_45/bin/javap --slave /usr/bin/jinfo jinfo  /usr/lib/jvm/jdk1.7.0_45/bin/jinfo --slave /usr/bin/jstat jstat  /usr/lib/jvm/jdk1.7.0_45/bin/jstat --slave /usr/bin/pack200 pack200  /usr/lib/jvm/jdk1.7.0_45/bin/pack200 --slave /usr/bin/serialver serialver  /usr/lib/jvm/jdk1.7.0_45/bin/serialver --slave /usr/bin/xjc xjc  /usr/lib/jvm/jdk1.7.0_45/bin/xjc

ฉันใช้สิ่งนี้หลังจากที่ฉันแตกไฟล์ tar.gz สำหรับ sun jdk1.7 เป็น / usr / lib / jvm /

คุณต้องการแทนที่ jdk1.7.0 ด้วยชื่อไดเร็กทอรีของเวอร์ชันที่คุณมีและหมายเลข 2 เป็นหมายเลขใด ๆ ที่คุณต้องการให้เป็นทางเลือก


0

ฉันใช้สิ่งต่อไปนี้เพื่อดาวน์โหลดและติดตั้ง Java 8 ล่าสุด:

JDK_ALT_LINK_JAVA=/usr/bin/java
URL_TO_DOWNLOAD='http://www.java.net/download/jdk8u60/archive/b17/binaries/jdk-8u60-ea-bin-b17-linux-x64-26_may_2015.tar.gz'

JDK8_ARCHIVE=$(basename $URL_TO_DOWNLOAD)

wget "${URL_TO_DOWNLOAD}"
tar zxf "${JDK8_ARCHIVE}"
mv jdk1.8.0_60/ /usr/lib/jvm/
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_60/bin/java 1008000060

0

# ฉันเขียนสคริปต์ง่าย ๆ

(
lookforJdks=~
echo $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" | cut -d' ' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner 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
)

0

ทำอีกสคริปต์ที่แตกต่างกันเล็กน้อยเพื่อเริ่มต้นทุกสิ่งที่เกี่ยวข้องกับจาวากับ JDK ที่ติดตั้งด้วยตนเอง:

#!/bin/bash

# Run update-alternatives for a manual installed JDK

JAVA_HOME=/opt/java/jdk1.8.0_152
java_bins=(appletviewer extcheck idlj jarsigner java javac javadoc javafxpackager javah javap javapackager java-rmi.cgi javaws jcmd jconsole jcontrol jdb jdeps jhat jinfo jjs jmap jps jrunscript jsadebugd jstat jstatd jvisualvm keytool native2ascii orbd pack200 policytool rmic rmid schemagen servertool tnameserv wsgen wsimport xjc jar jmc jmc.ini jstack rmiregistry serialver unpack200)

for java_bin in ${java_bins[@]}; do
    echo "Setting $java_bin..."
    update-alternatives --install /usr/bin/$java_bin $java_bin $JAVA_HOME/bin/$java_bin 1
    update-alternatives --set $java_bin $JAVA_HOME/bin/$java_bin
done

echo "Done."

นี่เป็นการติดตั้งทางเลือกใหม่และตั้งทางเลือกใหม่เหล่านี้เป็นค่าเริ่มต้น


0

ฉันได้ลบล้างทุกอย่างที่เกี่ยวกับ JAVA 9 และติดตั้งใหม่ Java 10 ใหม่ด้วยตนเอง

หมายเหตุ : คุณต้องการupdate-alternativesเฉพาะในกรณีที่คุณมีหลายรุ่นจาวา

หมายเหตุ : คุณสามารถล้างข้อมูลทุกอย่างเกี่ยวกับ Java ก่อนที่จะติดตั้ง Java ใหม่

 sudo apt purge java*

สำหรับการติดตั้ง Java 10 ใหม่

  1. ดาวน์โหลด JDK 10 ได้ที่นี่ (คุณสามารถดาวน์โหลด JRE และเซิร์ฟเวอร์ JRE): http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. แยกและวางบางส่วนใน/opt/javaไดเรกทอรี คุณใส่ JDK ไว้ในopt/javaไดเรกทอรีทำให้ผู้ใช้ทุกคนสามารถใช้งานได้

    ( หมายเหตุ : ฉันดาวน์โหลด JDK, JRE และเซิร์ฟเวอร์ JRE และแตก JDK และเปลี่ยนชื่อแตกโฟลเดอร์เป็น jdk10 แตก JRE และเปลี่ยนชื่อแยกโฟลเดอร์เป็น jre10 และแตกเซิร์ฟเวอร์ JRE และเปลี่ยนชื่อโฟลเดอร์เป็น jre10server ด้านล่าง )

  3. อัพเดตไฟล์ / etc / environment ของคุณดังต่อไปนี้ ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้คุณต้องโหลด/etc/environmentไฟล์สคริปต์เข้าสู่ระบบอีกครั้งโดยใช้คำสั่ง source ดังต่อไปนี้

source /etc/environment

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกการอัพเดทต่อไปนี้คือลิงค์: ฉันจะทำให้ Java เป็นค่าเริ่มต้นสำหรับ JRE / JDK ที่ติดตั้งด้วยตนเองได้อย่างไร?


-1

ลิงก์จาวาที่เกี่ยวข้องบางตัวอยู่ในระดับหลักและไม่สามารถใช้เป็นทาสในตัวเลือกการอัพเดท - ติดตั้ง ใช้คำสั่งต่อไปนี้เพื่อติดตั้ง oracle jdk และอัพเดตทางเลือก หวังว่ามันจะช่วย

update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_45/bin/java 10000 --slave /usr/bin/appletviewer appletviewer  /usr/java/jdk1.7.0_45/bin/appletviewer --slave /usr/bin/java-rmi.cgi java-rmi.cgi  /usr/java/jdk1.7.0_45/bin/java-rmi.cgi --slave /usr/bin/jmap jmap  /usr/java/jdk1.7.0_45/bin/jmap --slave /usr/bin/jstatd jstatd  /usr/java/jdk1.7.0_45/bin/jstatd --slave /usr/bin/apt apt  /usr/java/jdk1.7.0_45/bin/apt --slave /usr/bin/javac javac  /usr/java/jdk1.7.0_45/bin/javac --slave /usr/bin/jcmd jcmd  /usr/java/jdk1.7.0_45/bin/jcmd --slave /usr/bin/jps jps  /usr/java/jdk1.7.0_45/bin/jps --slave /usr/bin/jvisualvm jvisualvm  /usr/java/jdk1.7.0_45/bin/jvisualvm --slave /usr/bin/rmic rmic  /usr/java/jdk1.7.0_45/bin/rmic --slave /usr/bin/extcheck extcheck  /usr/java/jdk1.7.0_45/bin/extcheck --slave /usr/bin/javadoc javadoc  /usr/java/jdk1.7.0_45/bin/javadoc --slave /usr/bin/jconsole jconsole  /usr/java/jdk1.7.0_45/bin/jconsole --slave /usr/bin/jrunscript jrunscript  /usr/java/jdk1.7.0_45/bin/jrunscript --slave /usr/bin/idlj idlj  /usr/java/jdk1.7.0_45/bin/idlj --slave /usr/bin/javafxpackager javafxpackager  /usr/java/jdk1.7.0_45/bin/javafxpackager --slave /usr/bin/jdb jdb  /usr/java/jdk1.7.0_45/bin/jdb --slave /usr/bin/jsadebugd jsadebugd  /usr/java/jdk1.7.0_45/bin/jsadebugd --slave /usr/bin/native2ascii native2ascii  /usr/java/jdk1.7.0_45/bin/native2ascii --slave /usr/bin/wsgen wsgen  /usr/java/jdk1.7.0_45/bin/wsgen --slave /usr/bin/jar jar  /usr/java/jdk1.7.0_45/bin/jar --slave /usr/bin/javah javah  /usr/java/jdk1.7.0_45/bin/javah --slave /usr/bin/jhat jhat  /usr/java/jdk1.7.0_45/bin/jhat --slave /usr/bin/jstack jstack  /usr/java/jdk1.7.0_45/bin/jstack --slave /usr/bin/schemagen schemagen  /usr/java/jdk1.7.0_45/bin/schemagen --slave /usr/bin/wsimport wsimport  /usr/java/jdk1.7.0_45/bin/wsimport --slave /usr/bin/jarsigner jarsigner  /usr/java/jdk1.7.0_45/bin/jarsigner --slave /usr/bin/javap javap  /usr/java/jdk1.7.0_45/bin/javap --slave /usr/bin/jinfo jinfo  /usr/java/jdk1.7.0_45/bin/jinfo --slave /usr/bin/jstat jstat  /usr/java/jdk1.7.0_45/bin/jstat --slave /usr/bin/serialver serialver  /usr/java/jdk1.7.0_45/bin/serialver --slave /usr/bin/xjc xjc  /usr/java/jdk1.7.0_45/bin/xjc
update-alternatives --install /usr/bin/policytool policytool /usr/java/jdk1.7.0_45/bin/policytool 10000
update-alternatives --install /usr/bin/servertool servertool  /usr/java/jdk1.7.0_45/bin/servertool 10000
update-alternatives --install /usr/bin/tnameserv tnameserv  /usr/java/jdk1.7.0_45/bin/tnameserv 10000
update-alternatives --install /usr/bin/keytool keytool  /usr/java/jdk1.7.0_45/bin/keytool 10000
update-alternatives --install /usr/bin/rmid rmid  /usr/java/jdk1.7.0_45/bin/rmid 10000
update-alternatives --install /usr/bin/unpack200 unpack200  /usr/java/jdk1.7.0_45/bin/unpack200  10000
update-alternatives --install /usr/bin/rmiregistry rmiregistry  /usr/java/jdk1.7.0_45/bin/rmiregistry 10000
update-alternatives --install /usr/bin/orbd orbd  /usr/java/jdk1.7.0_45/bin/orbd 10000
update-alternatives --install /usr/bin/pack200 pack200  /usr/java/jdk1.7.0_45/bin/pack200 10000

PS: ควรถูกดำเนินการในฐานะ root / sudo

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