我想安裝 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