我在Linux Debian(Squeeze)上安装Apache Solr.我被指示安装sun-java jdk 1st.然后告诉我应该使用该命令sudo update-alternatives --config java来确保特定的java(sun-java)是默认的运行时.然而,当我运行此命令时,我得到:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/bin/gij-4.4 1044 manual mode
2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
Press enter to keep the current choice[*], or type selection number:
Run Code Online (Sandbox Code Playgroud)
那么我应该选择哪个数字将sun-java作为默认运行时?此外,自动和手动模式到底意味着什么?如果我选择上面的3并运行update-alternative命令,我会收到与上面相同的输出,除了*现在位于3的前面之外,似乎没有任何改变,尽管它仍然是读取手动模式.
有没有办法确认我所做的是正确的?
Jor*_*son 38
如果您在执行此操作后键入"java -version",则在选择选项时会发现很大的变化.因此,如果您运行update-alternatives --config java并选择选项3,您将使用Sun实施.
此外,关于autoVS manual mode,进行选择应该把它拿出来的auto mode每本页面说明:
使用该
--config选项时,备选项将列出链接组的所有选项,其中给定名称是主链接.然后,系统将提示您选择要用于链接组的选项.进行更改后,链接组将不再显示auto mode.您需要使用该--auto选项才能返回自动状态.
我相信auto mode在安装第一个/唯一的JRE/JDK时会设置.
jop*_*rat 16
update-alternatives 在这种情况下有问题,因为它会强制您根据JDK更新所有元素.
出于此特定目的,该程序包java-common包含一个名为的工具update-java-alternatives.
使用它很简单.首先列出您机器上可用的JDK安装:
root@mylaptop:~# update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
然后选择一个:
root@mylaptop:~# update-java-alternatives -s java-1.7.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
小智 11
假设有人安装了JDK /opt/java/jdk1.8.0_144:
安装javac的替代方案
$ sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.8.0_144/bin/javac 1
Run Code Online (Sandbox Code Playgroud)检查/更新备选配置:
$ sudo update-alternatives --config javac
Run Code Online (Sandbox Code Playgroud)如果只有一个替代方案,javac您将收到一条消息说明,否则请选择新JDK的选项.
要检查一切是否正确设置,然后:
$ which javac
/usr/bin/javac
$ ls -l /usr/bin/javac
lrwxrwxrwx 1 root root 23 Sep 4 17:10 /usr/bin/javac -> /etc/alternatives/javac
$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 32 Sep 4 17:10 /etc/alternatives/javac -> /opt/java/jdk1.8.0_144/bin/javac
Run Code Online (Sandbox Code Playgroud)
最后
$ javac -version
javac 1.8.0_144
Run Code Online (Sandbox Code Playgroud)
根据需要重复java,keytool,jar等.
小智 8
#!/bin/bash
cd /opt/
sudo mkdir java
sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz
sudo ln -s jdk1.8.0_192 current
for file in /opt/java/current/bin/*
do
if [ -x $file ]
then
filename=`basename $file`
sudo update-alternatives --install /usr/bin/$filename $filename $file 20000
sudo update-alternatives --set $filename $file
#echo $file $filename
fi
done
Run Code Online (Sandbox Code Playgroud)
我正在使用 Ubuntu 18.04 LTS。大多数时候,当我更改我的java版本时,我也想使用相同的javac版本。
我使用update-alternatives这种方式,使用java_home替代方法:
安装每个java版本/opt/java/<version>,例如
~$ ll /opt/java/
total 24
drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./
drwxr-xr-x 9 root root 4096 feb. 7 13:40 ../
drwxr-xr-x 8 stephanecodes stephanecodes 4096 jan. 8 2019 jdk-11.0.2/
drwxr-xr-x 7 stephanecodes stephanecodes 4096 dec. 15 2018 jdk1.8.0_201/
Run Code Online (Sandbox Code Playgroud)
配置备选方案
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200
Run Code Online (Sandbox Code Playgroud)
声明JAVA_HOME(在这种情况下,我为此使用全局初始化脚本)
~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'
Run Code Online (Sandbox Code Playgroud)
注销或重新启动 Ubuntu(这将重新加载/etc/profile.d/environment.sh)
更改java版本
选择您要使用的版本
~$ sudo update-alternatives --config java_home
There are 2 choices for the alternative java_home (providing /opt/java/current).
Selection Path Priority Status
------------------------------------------------------------
0 /opt/java/jdk-11.0.2 200 auto mode
1 /opt/java/jdk-11.0.2 200 manual mode
* 2 /opt/java/jdk1.8.0_201 100 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Run Code Online (Sandbox Code Playgroud)
检查版本
~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
~$ javac -version
javac 11.0.2
Run Code Online (Sandbox Code Playgroud)
提示
将以下行添加到~/.bash_aliases文件:
alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"
Run Code Online (Sandbox Code Playgroud)
现在使用change-java-version命令更改java版本
还有许多其他二进制文件需要链接,所以我认为最好尝试类似的方法sudo update-alternatives --all并为除java和之外的其他所有内容选择正确的替代品javac。
小智 6
我在 Debian 10 中安装 java 17 的步骤
步骤1:从URL下载jdk并移动到服务器 https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb
或者您可以使用 weget 命令直接在服务器中下载
sudo apt update
sudo apt -y install wget curl
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb
Run Code Online (Sandbox Code Playgroud)
第2步:使用命令'安装
sudo apt install ./jdk-17_linux-x64_bin.deb
Run Code Online (Sandbox Code Playgroud)
步骤 3:将默认 javac 和 java 版本更新为 17
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 1
sudo update-alternatives --config javac
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 1
sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)
第四步:检查jre版本
java -version
Run Code Online (Sandbox Code Playgroud)
检查jdk版本
javac -version
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158512 次 |
| 最近记录: |