Mr.*_*ong 8 openjdk update-alternatives
为了试用 jdk11 的新功能,我将其安装到 /opt/ 并希望使用更新替代品来使用它,如下所示:
sudo update-alternatives --install /etc/alternatives/java OpenJDK-11 /opt/jdk-11/bin/java 1102
Run Code Online (Sandbox Code Playgroud)
返回:
update-alternatives: using /opt/jdk-11/bin/javac to provide /etc/alternatives/java (OpenJDK-11) in auto mode
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时
$ sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)
我没有看到我刚刚安装的jdk。相反,我收到警告和已经存在的选择:
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Run Code Online (Sandbox Code Playgroud)
警告是什么意思,为什么它实际上同时显示自动和手动模式条目?为什么我的 jdk11 不在那里?
我想你的第一个命令是错误的;它应该是:
sudo update-alternatives /usr/bin/java java /opt/jdk-11/bin/java 1102
Run Code Online (Sandbox Code Playgroud)
对于 jdk 的所有其他可执行文件也是如此。
首先将 jdk-11 安装在/usr/lib/jvm
. 我们将openjdk-11+28-amd64
在这里使用
我叫它 jdk-11.sh
sudo update-alternatives /usr/bin/java java /opt/jdk-11/bin/java 1102
Run Code Online (Sandbox Code Playgroud)
然后使jdk-11.sh
可执行文件,并运行
sudo ./jdk-11.sh -i
Run Code Online (Sandbox Code Playgroud)
为新的 jdk-11 添加替代品
然后在帮助下切换到该替代方案 update-java-alternatives
我们需要一个名为.openjdk-11+28.jinfo
inside的帮助文件/usr/lib/jvm
name=openjdk-11+28-amd64
alias=openjdk-11+28-amd64
priority=1102
section=main
hl rmid /usr/lib/jvm/openjdk-11+28-amd64/bin/rmid
hl java /usr/lib/jvm/openjdk-11+28-amd64/bin/java
hl keytool /usr/lib/jvm/openjdk-11+28-amd64/bin/keytool
hl jjs /usr/lib/jvm/openjdk-11+28-amd64/bin/jjs
hl pack200 /usr/lib/jvm/openjdk-11+28-amd64/bin/pack200
hl rmiregistry /usr/lib/jvm/openjdk-11+28-amd64/bin/rmiregistry
hl unpack200 /usr/lib/jvm/openjdk-11+28-amd64/bin/unpack200
hl jexec /usr/lib/jvm/openjdk-11+28-amd64/lib/jexec
jdkhl jlink /usr/lib/jvm/openjdk-11+28-amd64/bin/jlink
jdkhl jdeps /usr/lib/jvm/openjdk-11+28-amd64/bin/jdeps
jdkhl rmic /usr/lib/jvm/openjdk-11+28-amd64/bin/rmic
jdkhl jinfo /usr/lib/jvm/openjdk-11+28-amd64/bin/jinfo
jdkhl jstat /usr/lib/jvm/openjdk-11+28-amd64/bin/jstat
jdkhl javac /usr/lib/jvm/openjdk-11+28-amd64/bin/javac
jdkhl jhsdb /usr/lib/jvm/openjdk-11+28-amd64/bin/jhsdb
jdkhl jps /usr/lib/jvm/openjdk-11+28-amd64/bin/jps
jdkhl jstack /usr/lib/jvm/openjdk-11+28-amd64/bin/jstack
jdkhl jrunscript /usr/lib/jvm/openjdk-11+28-amd64/bin/jrunscript
jdkhl javadoc /usr/lib/jvm/openjdk-11+28-amd64/bin/javadoc
jdkhl jmod /usr/lib/jvm/openjdk-11+28-amd64/bin/jmod
jdkhl javap /usr/lib/jvm/openjdk-11+28-amd64/bin/javap
jdkhl jar /usr/lib/jvm/openjdk-11+28-amd64/bin/jar
jdkhl jaotc /usr/lib/jvm/openjdk-11+28-amd64/bin/jaotc
jdkhl jshell /usr/lib/jvm/openjdk-11+28-amd64/bin/jshell
jdkhl jmap /usr/lib/jvm/openjdk-11+28-amd64/bin/jmap
jdkhl jdeprscan /usr/lib/jvm/openjdk-11+28-amd64/bin/jdeprscan
jdkhl jimage /usr/lib/jvm/openjdk-11+28-amd64/bin/jimage
jdkhl jstatd /usr/lib/jvm/openjdk-11+28-amd64/bin/jstatd
jdkhl jdb /usr/lib/jvm/openjdk-11+28-amd64/bin/jdb
jdkhl serialver /usr/lib/jvm/openjdk-11+28-amd64/bin/serialver
jdkhl jcmd /usr/lib/jvm/openjdk-11+28-amd64/bin/jcmd
jdkhl jarsigner /usr/lib/jvm/openjdk-11+28-amd64/bin/jarsigner
jdk jconsole /usr/lib/jvm/openjdk-11+28-amd64/bin/jconsole
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo update-java-alternatives -s openjdk-11+28-amd64
Run Code Online (Sandbox Code Playgroud)
sudo update-java-alternatives -s java-1.11.0-openjdk-amd64
sudo ./jdk-11.sh -r # optionnal
sudo rm -rf /usr/lib/jvm/openjdk-11+28-amd64 # optionnal
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9790 次 |
最近记录: |