AdoptOpenJDK Installation unter Ubuntu (Alternativen-System)
Diese Anleitung beschreibt die Installation des OpenJDK 8 (LTS) der AdoptOpenJDK Distribution unter Ubuntu 18.04. Es wird davon ausgegangen, dass bereits ein von Ubuntu ausgelieferte OpenJDK (8 oder 11) installiert ist. Diese Beschreibung basiert in großen Teilen auf diesem Artikel.
Download des OpenJDK
Java OpenJDK Distributionen könne für alle gängigen Betriebssysteme auf der Homepage von AdoptOpenJDK heruntergeladen werden. Zur Einfachheit soll die Distribution jdk8u212-b03 heißen. Die bei AdoptOpenJDK heruntergeladene Datei trug den Namen OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz.
Entpacken des OpenJDK
Das OpenJDK muss als root in das Verzeichnis /usr/lib/jvm/jdk8u212-b03 entpackt werden. Hierzu muss das AdoptOpenJDK in ein eigenes Verzeichnis entpackt werden, welches nun neben dem bereits durch Ubuntu ausgelieferten OpenJDK liegt.
Alternativen der Java Tools installieren
Ubuntu verwendet ein Alternativen-System, mit dessen Hilfe zwischen verschiedenen Versionen eines Tools gewechselt werden kann. Dieses Alternativen-System wird ebenfalls verwendet, zwischen verschiedenen Java Distributionen zu wechseln - sprich zwischen allen ca. 40 Java Tools zu wechseln. Alternativen werden hierbei durch mehrfache Verlinkungen realisiert (siehe auch /etc/alternatives/). Bevor zwischen verschiedenen Alternativen gewechselt werden kann, müssen die jeweiligen Tools im Alternativen-System installiert werden. Dies erledigen folgende bash Skripte.
Alternativ kann auch das folgende Skript verwendet werden. Dieses wurde von hier kopiert.
#!/bin/bash
if [[ $# -eq 0 ]] ;then
echo "Usage: jdk-11.sh [-i|-r]"
echo " -i install alternatives for jdk-11"
echo " -r remove alternatives for jdk-11"
exit -1
fi
install_dir="openjdk-11+28-amd64"
cmd=(java jexec jjs keytool pack200 rmid rmiregistry unpack200 jaotc jarsigner jar javac javadoc javap jcmd jdb jdeprscan jdeps jhsdb jimage jinfo jlink jmap jmod jps jrunscript jshell jstack jstatd jstat rmic serialver jconsole)
if [[ "$1" == "-i" ]] ;then
for c in ${cmd[@]}; do
update-alternatives --install /usr/bin/$c $c /usr/lib/jvm/$install_dir/bin/$c 1102
done
fi
if [[ "$1" == "-r" ]] ;then
for c in ${cmd[@]}; do
update-alternatives --remove $c /usr/lib/jvm/$install_dir/bin/$c
update-alternatives --auto $c
done
fi
Erstellen einer jinfo Datei
Bei der jinfo Datei handelt es sich um eine versteckte Datei mit dem Namen des jeweiligen OpenJDK - sprich des jeweiligen Verzeichnisnamens - und der Endung .jinfo. Da es sich hierbei um eine versteckte Datei handelt muss diese mit einem Punkt beginnen. Die jinfo Datei liegt im Verzeichnis /usr/lib/jvm/ D.h. in diesem Beispiel muss die Datei /usr/lib/jvm/.jdk8u212-b03.jinfo angelegt werden. Die jinfo Datei wird durch das Tool update-java-alternatives verwendet, welches alle Alternativen aller spezifizierten Java Tools in einem Aufruf umsetzt. Die jinfo Datei korrespondiert zu den oben installierten Alternativen aller Java Tools der beschriebenen Distribution.
Update der Berechtigungen
Für die neue OpenJDK Distribution unter /usr/lib/jvm/ sowie die jinfo Datei sollte als Owner root:root gesetzt werden.
Update der Java Alternative
Zum aktualisieren oder setzen der jeweiligen Java Alternative wird das Tool update-java-alternatives verwendet. Dieses in dem Paket java-common enthalten. Sollte dieses noch nicht unter Ubuntu installiert sein, muss folgender Befehl ausgeführt werden.
sudo apt install java-common
Bevor nun zur neu installierten OpenJDK Distribution gewechselt wird, können mit Hilfe des folgenden Befehls alle Java Alternativen dargestellt werden.
update-java-alternatives -l
Nun kann mit folgendem Befehl zur neu installierten OpenJDK Distribution gewechselt werden.
sudo update-java-alternatives -s jdk8u212-b03
JAVA_HOME setzen
Die Umgebungsvariable JAVA_HOME sollte an die neu konfigurierte Java Alternative angepasst werden. Dies kann in der Datei /etc/environment erfolgen.
JAVA_HOME="/usr/lib/jvm/jdk8u212-b03/"