我一直在尝试在 Debian 9 上安装 openjdk 9 并让所有内容都指向该安装。然而,有些东西已经关闭,并且不想更新java
终端中默认命令指向的位置。
我用一个简单的方法安装了openjdk9sudo apt-get install openjdk-9-jre openjdk-9-jdk
如果我运行readlink $(which java)
它指向/etc/alternatives/java
如果我运行readklink /etc/alternatives/java
它指向/usr/lib/jvm/java-9-openjdk-amd64/bin/java
但最奇怪的是,如果我一次运行它,readlink -f $(which java)
它指向/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Which 这正是我java -version
在终端中运行时得到的结果:
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
该default-java
符号链接还指向 openjdk 8。
但是,javac -version
在终端中看起来是正确的:
javac 9.0.1
update-alternatives
看起来适合java
和javac
:
$ 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-9-openjdk-amd64/bin/java 1091 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode
* 2 /usr/lib/jvm/java-9-openjdk-amd64/bin/java 1091 manual mode
$ sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 1091 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1069 manual mode
* 2 /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 1091 manual mode
有谁知道为什么我无法让java
命令与系统的其他部分保持一致?或者对下一步还可以尝试什么有想法?
非常感谢。
编辑添加成绩单
resu@laptop/usr/lib/jvm
$ ls -l
total 12
lrwxrwxrwx 1 root root 24 Jan 6 2017 default-java -> java-1.8.0-openjdk-amd64
drwxr-xr-x 4 root root 4096 Dec 16 16:47 java-1.5.0-gcj-6-amd64
lrwxrwxrwx 1 root root 20 Oct 25 2016 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
lrwxrwxrwx 1 root root 20 Oct 26 19:44 java-1.9.0-openjdk-amd64 -> java-9-openjdk-amd64
drwxr-xr-x 7 root root 4096 Nov 26 01:18 java-8-openjdk-amd64
drwxr-xr-x 9 root root 4096 Dec 10 20:26 java-9-openjdk-amd64
lrwxrwxrwx 1 root root 34 Dec 31 20:09 java-latest -> /usr/lib/jvm/java-9-openjdk-amd64/
resu@laptop/usr/lib/jvm
$ cd /etc/alternatives/
resu@laptop/etc/alternatives
$ ls -l | grep java
lrwxrwxrwx 1 root root 50 Dec 31 20:06 appletviewer -> /usr/lib/jvm/java-9-openjdk-amd64/bin/appletviewer
lrwxrwxrwx 1 root root 60 Dec 31 20:06 appletviewer.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/appletviewer.1.gz
lrwxrwxrwx 1 root root 46 Jan 21 2017 extcheck -> /usr/lib/jvm/java-8-openjdk-amd64/bin/extcheck
lrwxrwxrwx 1 root root 56 Jan 21 2017 extcheck.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/extcheck.1.gz
lrwxrwxrwx 1 root root 42 Dec 10 20:26 idlj -> /usr/lib/jvm/java-9-openjdk-amd64/bin/idlj
lrwxrwxrwx 1 root root 52 Dec 10 20:26 idlj.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/idlj.1.gz
lrwxrwxrwx 1 root root 56 Oct 8 17:17 itweb-settings -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/itweb-settings
lrwxrwxrwx 1 root root 66 Oct 8 17:17 itweb-settings.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/itweb-settings.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jaotc -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jaotc
lrwxrwxrwx 1 root root 41 Dec 10 20:26 jar -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jar
lrwxrwxrwx 1 root root 51 Dec 10 20:26 jar.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jar.1.gz
lrwxrwxrwx 1 root root 47 Dec 10 20:26 jarsigner -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jarsigner
lrwxrwxrwx 1 root root 57 Dec 10 20:26 jarsigner.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jarsigner.1.gz
lrwxrwxrwx 1 root root 42 Dec 31 20:06 java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java
lrwxrwxrwx 1 root root 52 Dec 31 20:06 java.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/java.1.gz
lrwxrwxrwx 1 root root 43 Dec 31 20:06 javac -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javac
lrwxrwxrwx 1 root root 53 Dec 31 20:06 javac.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 45 Dec 10 20:26 javadoc -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javadoc
lrwxrwxrwx 1 root root 55 Dec 10 20:26 javadoc.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 javah -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javah
lrwxrwxrwx 1 root root 53 Dec 10 20:26 javah.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 javap -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javap
lrwxrwxrwx 1 root root 53 Dec 10 20:26 javap.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/javap.1.gz
lrwxrwxrwx 1 root root 48 Oct 8 17:17 javaws -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/javaws
lrwxrwxrwx 1 root root 58 Oct 8 17:17 javaws.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/javaws.1.gz
lrwxrwxrwx 1 root root 42 Dec 10 20:26 jcmd -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jcmd
lrwxrwxrwx 1 root root 52 Dec 10 20:26 jcmd.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jcmd.1.gz
lrwxrwxrwx 1 root root 46 Dec 31 20:06 jconsole -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jconsole
lrwxrwxrwx 1 root root 56 Dec 31 20:06 jconsole.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jconsole.1.gz
lrwxrwxrwx 1 root root 41 Dec 10 20:26 jdb -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jdb
lrwxrwxrwx 1 root root 51 Dec 10 20:26 jdb.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jdb.1.gz
lrwxrwxrwx 1 root root 47 Dec 10 20:26 jdeprscan -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jdeprscan
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jdeps -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jdeps
lrwxrwxrwx 1 root root 53 Dec 10 20:26 jdeps.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jdeps.1.gz
lrwxrwxrwx 1 root root 43 Dec 31 20:06 jexec -> /usr/lib/jvm/java-9-openjdk-amd64/lib/jexec
lrwxrwxrwx 1 root root 48 Dec 31 20:06 jexec-binfmt -> /usr/lib/jvm/java-9-openjdk-amd64/lib/jar.binfmt
lrwxrwxrwx 1 root root 42 Jan 21 2017 jhat -> /usr/lib/jvm/java-8-openjdk-amd64/bin/jhat
lrwxrwxrwx 1 root root 52 Jan 21 2017 jhat.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/jhat.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jhsdb -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jhsdb
lrwxrwxrwx 1 root root 44 Dec 10 20:26 jimage -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jimage
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jinfo -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jinfo
lrwxrwxrwx 1 root root 53 Dec 10 20:26 jinfo.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jinfo.1.gz
lrwxrwxrwx 1 root root 41 Dec 31 20:06 jjs -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jjs
lrwxrwxrwx 1 root root 51 Dec 31 20:06 jjs.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jjs.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jlink -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jlink
lrwxrwxrwx 1 root root 42 Dec 10 20:26 jmap -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jmap
lrwxrwxrwx 1 root root 52 Dec 10 20:26 jmap.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jmap.1.gz
lrwxrwxrwx 1 root root 42 Dec 10 20:26 jmod -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jmod
lrwxrwxrwx 1 root root 41 Dec 10 20:26 jps -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jps
lrwxrwxrwx 1 root root 51 Dec 10 20:26 jps.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jps.1.gz
lrwxrwxrwx 1 root root 48 Dec 10 20:26 jrunscript -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jrunscript
lrwxrwxrwx 1 root root 58 Dec 10 20:26 jrunscript.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jrunscript.1.gz
lrwxrwxrwx 1 root root 47 Jan 21 2017 jsadebugd -> /usr/lib/jvm/java-8-openjdk-amd64/bin/jsadebugd
lrwxrwxrwx 1 root root 57 Jan 21 2017 jsadebugd.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/jsadebugd.1.gz
lrwxrwxrwx 1 root root 44 Dec 10 20:26 jshell -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jshell
lrwxrwxrwx 1 root root 44 Dec 10 20:26 jstack -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jstack
lrwxrwxrwx 1 root root 54 Dec 10 20:26 jstack.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jstack.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 jstat -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jstat
lrwxrwxrwx 1 root root 53 Dec 10 20:26 jstat.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jstat.1.gz
lrwxrwxrwx 1 root root 44 Dec 10 20:26 jstatd -> /usr/lib/jvm/java-9-openjdk-amd64/bin/jstatd
lrwxrwxrwx 1 root root 54 Dec 10 20:26 jstatd.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/jstatd.1.gz
lrwxrwxrwx 1 root root 45 Dec 31 20:06 keytool -> /usr/lib/jvm/java-9-openjdk-amd64/bin/keytool
lrwxrwxrwx 1 root root 55 Dec 31 20:06 keytool.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/keytool.1.gz
lrwxrwxrwx 1 root root 64 Oct 8 17:18 mozilla-javaplugin.so -> /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
lrwxrwxrwx 1 root root 50 Jan 21 2017 native2ascii -> /usr/lib/jvm/java-8-openjdk-amd64/bin/native2ascii
lrwxrwxrwx 1 root root 60 Jan 21 2017 native2ascii.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/native2ascii.1.gz
lrwxrwxrwx 1 root root 42 Dec 31 20:06 orbd -> /usr/lib/jvm/java-9-openjdk-amd64/bin/orbd
lrwxrwxrwx 1 root root 52 Dec 31 20:06 orbd.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/orbd.1.gz
lrwxrwxrwx 1 root root 45 Dec 31 20:06 pack200 -> /usr/lib/jvm/java-9-openjdk-amd64/bin/pack200
lrwxrwxrwx 1 root root 55 Dec 31 20:06 pack200.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/pack200.1.gz
lrwxrwxrwx 1 root root 54 Oct 8 17:17 policyeditor -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policyeditor
lrwxrwxrwx 1 root root 64 Oct 8 17:17 policyeditor.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/policyeditor.1.gz
lrwxrwxrwx 1 root root 48 Dec 31 20:06 policytool -> /usr/lib/jvm/java-9-openjdk-amd64/bin/policytool
lrwxrwxrwx 1 root root 58 Dec 31 20:06 policytool.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/policytool.1.gz
lrwxrwxrwx 1 root root 42 Dec 10 20:26 rmic -> /usr/lib/jvm/java-9-openjdk-amd64/bin/rmic
lrwxrwxrwx 1 root root 52 Dec 10 20:26 rmic.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/rmic.1.gz
lrwxrwxrwx 1 root root 42 Dec 31 20:06 rmid -> /usr/lib/jvm/java-9-openjdk-amd64/bin/rmid
lrwxrwxrwx 1 root root 52 Dec 31 20:06 rmid.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/rmid.1.gz
lrwxrwxrwx 1 root root 49 Dec 31 20:06 rmiregistry -> /usr/lib/jvm/java-9-openjdk-amd64/bin/rmiregistry
lrwxrwxrwx 1 root root 59 Dec 31 20:06 rmiregistry.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/rmiregistry.1.gz
lrwxrwxrwx 1 root root 47 Dec 10 20:26 schemagen -> /usr/lib/jvm/java-9-openjdk-amd64/bin/schemagen
lrwxrwxrwx 1 root root 57 Dec 10 20:26 schemagen.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/schemagen.1.gz
lrwxrwxrwx 1 root root 47 Dec 10 20:26 serialver -> /usr/lib/jvm/java-9-openjdk-amd64/bin/serialver
lrwxrwxrwx 1 root root 57 Dec 10 20:26 serialver.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/serialver.1.gz
lrwxrwxrwx 1 root root 48 Dec 31 20:06 servertool -> /usr/lib/jvm/java-9-openjdk-amd64/bin/servertool
lrwxrwxrwx 1 root root 58 Dec 31 20:06 servertool.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/servertool.1.gz
lrwxrwxrwx 1 root root 47 Dec 31 20:06 tnameserv -> /usr/lib/jvm/java-9-openjdk-amd64/bin/tnameserv
lrwxrwxrwx 1 root root 57 Dec 31 20:06 tnameserv.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/tnameserv.1.gz
lrwxrwxrwx 1 root root 47 Dec 31 20:06 unpack200 -> /usr/lib/jvm/java-9-openjdk-amd64/bin/unpack200
lrwxrwxrwx 1 root root 57 Dec 31 20:06 unpack200.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/unpack200.1.gz
lrwxrwxrwx 1 root root 43 Dec 10 20:26 wsgen -> /usr/lib/jvm/java-9-openjdk-amd64/bin/wsgen
lrwxrwxrwx 1 root root 53 Dec 10 20:26 wsgen.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/wsgen.1.gz
lrwxrwxrwx 1 root root 46 Dec 10 20:26 wsimport -> /usr/lib/jvm/java-9-openjdk-amd64/bin/wsimport
lrwxrwxrwx 1 root root 56 Dec 10 20:26 wsimport.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/wsimport.1.gz
lrwxrwxrwx 1 root root 41 Dec 10 20:26 xjc -> /usr/lib/jvm/java-9-openjdk-amd64/bin/xjc
lrwxrwxrwx 1 root root 51 Dec 10 20:26 xjc.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/xjc.1.gz
resu@laptop/etc/alternatives
$ which java
/usr/bin/java
resu@laptop/etc/alternatives
$ type java
java is hashed (/usr/bin/java)
resu@laptop/etc/alternatives
$ readlink $(which java)
/etc/alternatives/java
resu@laptop/etc/alternatives
$ readlink -f $(which java)
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
resu@laptop/etc/alternatives
$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
resu@laptop/etc/alternatives
$ javac -version
javac 9.0.1
resu@laptop/etc/alternatives
$ 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-9-openjdk-amd64/bin/java 1091 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode
* 2 /usr/lib/jvm/java-9-openjdk-amd64/bin/java 1091 manual mode
Press <enter> to keep the current choice[*], or type selection number: ^C
resu@laptop/etc/alternatives
$ sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 1091 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1069 manual mode
* 2 /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 1091 manual mode