我想安装 Temurin JDK 8 和 11,我按照以下步骤安装它们
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz
tar xzf OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz
sudo mv jdk8u312-b07/ /usr/lib/jvm/temurinjdk-8-hotspot-amd64
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/temurinjdk-8-hotspot-amd64/bin/java" 1081
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/temurinjdk-8-hotspot-amd64/bin/javac" 1081
但我不确定这是否 100% 正确,以及如何生成 .jinfo 文件,这是否必要?
答案1
您可以使用Adoptium Debian / Ubuntu 存储库
添加 Eclipse Adoptium GPG 密钥
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add -
添加 Eclipse Adoptium apt 存储库
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
安装您需要的 Temurin 版本
sudo apt update # update if you haven't already sudo apt install temurin-8-jdk sudo apt install temurin-17-jdk
配置默认版本
sudo update-alternatives --config java
答案2
我从原始 AdoptOpenJDK deb 包中提取了脚本,并修改了版本以供使用:
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz
mkdir -p /usr/lib/jvm
sudo tar -xvvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz -C /usr/lib/jvm/
sudo ./java-alternative install /usr/lib/jvm/jdk-17.0.1+12
sudo ./java-alternative set /usr/lib/jvm/jdk-17.0.1+12
…
sudo ./java-alternative remove /usr/lib/jvm/jdk-17.0.1+12
脚本源代码:
#!/bin/sh
set -eu
priority=2222
#jdk_base_dir=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64
#jdk_base_dir=/usr/lib/jvm/jdk-17.0.1+12
jdk_base_dir="$2"
if [ ! -d "$jdk_base_dir" ]
then
echo "Invalid java directory. Choose one of: ";
ls -1d /usr/lib/jvm/*
exit
fi
tools="jaotc jar jarsigner java javac javadoc javap jcmd jconsole jdb jdeprscan jdeps jfr jhsdb jimage jinfo jjs jlink jmap jmod jps jrunscript jshell jstack jstat jstatd keytool pack200 rmic rmid rmiregistry serialver unpack200 jexec jspawnhelper"
case "$1" in
install)
for tool in $tools ; do
for tool_path in "$jdk_base_dir/bin/$tool" "$jdk_base_dir/lib/$tool" ; do
if [ ! -e "$tool_path" ]; then
continue
fi
slave=""
tool_man_path="$jdk_base_dir/man/man1/$tool.1"
if [ -e "$tool_man_path" ]; then
slave="--slave /usr/share/man/man1/$tool.1 $tool.1 $tool_man_path"
fi
update-alternatives \
--install \
"/usr/bin/$tool" \
"$tool" \
"$tool_path" \
"$priority" \
$slave
done
done
;;
remove)
for tool in $tools ; do
for tool_path in "$jdk_base_dir/bin/$tool" "$jdk_base_dir/lib/$tool" ; do
if [ ! -e "$tool_path" ]; then
continue
fi
update-alternatives \
--remove \
"$tool" \
"$tool_path"
done
done
;;
set)
for tool in $tools ; do
for tool_path in "$jdk_base_dir/bin/$tool" "$jdk_base_dir/lib/$tool" ; do
if [ ! -e "$tool_path" ]; then
continue
fi
update-alternatives \
--set \
"$tool" \
"$tool_path"
done
done
;;
esac