AdoptOpenJDK Installation unter Ubuntu (Alternativen-System)

Aus Wiki - Jochen Hammann
Zur Navigation springen Zur Suche springen

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 erledigt das folgende bash script.

#!/bin/bash

name=jdk8u212-b03

sudo update-alternatives --install /usr/bin/appletviewer appletviewer /usr/lib/jvm/${name}/bin/appletviewer 180
sudo update-alternatives --install /usr/bin/extcheck extcheck /usr/lib/jvm/${name}/bin/extcheck 180
sudo update-alternatives --install /usr/bin/idlj idlj /usr/lib/jvm/${name}/bin/idlj 180
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/${name}/bin/jar 180
sudo update-alternatives --install /usr/bin/jarsigner jarsigner /usr/lib/jvm/${name}/bin/jarsigner 180
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/${name}/jre/bin/java 180
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/${name}/bin/javac 180
sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/${name}/bin/javadoc 180
sudo update-alternatives --install /usr/bin/javafxpackager javafxpackager /usr/lib/jvm/${name}/bin/javafxpackager 180
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/${name}/bin/javah 180
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/${name}/bin/javap 180
sudo update-alternatives --install /usr/bin/javapackager javapackager /usr/lib/jvm/${name}/bin/javapackager 180
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/${name}/bin/javaws 180
sudo update-alternatives --install /usr/bin/jcmd jcmd /usr/lib/jvm/${name}/bin/jcmd 180
sudo update-alternatives --install /usr/bin/jconsole jconsole /usr/lib/jvm/${name}/bin/jconsole 180
sudo update-alternatives --install /usr/bin/jcontrol jcontrol /usr/lib/jvm/${name}/bin/jcontrol 180
sudo update-alternatives --install /usr/bin/jdb jdb /usr/lib/jvm/${name}/bin/jdb 180
sudo update-alternatives --install /usr/bin/jdeps jdeps /usr/lib/jvm/${name}/bin/jdeps 180
sudo update-alternatives --install /usr/bin/jexec jexec /usr/lib/jvm/${name}/jre/lib/jexec 180
sudo update-alternatives --install /usr/bin/jhat jhat /usr/lib/jvm/${name}/bin/jhat 180
sudo update-alternatives --install /usr/bin/jinfo jinfo /usr/lib/jvm/${name}/bin/jinfo 180
sudo update-alternatives --install /usr/bin/jjs jjs /usr/lib/jvm/${name}/bin/jjs 180
sudo update-alternatives --install /usr/bin/jmap jmap /usr/lib/jvm/${name}/bin/jmap 180
sudo update-alternatives --install /usr/bin/jmc jmc /usr/lib/jvm/${name}/bin/jmc 180
sudo update-alternatives --install /usr/bin/jps jps /usr/lib/jvm/${name}/bin/jps 180
sudo update-alternatives --install /usr/bin/jrunscript jrunscript /usr/lib/jvm/${name}/bin/jrunscript 180
sudo update-alternatives --install /usr/bin/jsadebugd jsadebugd /usr/lib/jvm/${name}/bin/jsadebugd 180
sudo update-alternatives --install /usr/bin/jstack jstack /usr/lib/jvm/${name}/bin/jstack 180
sudo update-alternatives --install /usr/bin/jstat jstat /usr/lib/jvm/${name}/bin/jstat 180
sudo update-alternatives --install /usr/bin/jstatd jstatd /usr/lib/jvm/${name}/bin/jstatd 180
sudo update-alternatives --install /usr/bin/jvisualvm jvisualvm /usr/lib/jvm/${name}/bin/jvisualvm 180
sudo update-alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/${name}/jre/bin/keytool 180
sudo update-alternatives --install /usr/bin/native2ascii native2ascii /usr/lib/jvm/${name}/bin/native2ascii 180
sudo update-alternatives --install /usr/bin/orbd orbd /usr/lib/jvm/${name}/jre/bin/orbd 180
sudo update-alternatives --install /usr/bin/pack200 pack200 /usr/lib/jvm/${name}/jre/bin/pack200 180
sudo update-alternatives --install /usr/bin/policytool policytool /usr/lib/jvm/${name}/jre/bin/policytool 180
sudo update-alternatives --install /usr/bin/rmic rmic /usr/lib/jvm/${name}/bin/rmic 180
sudo update-alternatives --install /usr/bin/rmid rmid /usr/lib/jvm/${name}/jre/bin/rmid 180
sudo update-alternatives --install /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/${name}/jre/bin/rmiregistry 180
sudo update-alternatives --install /usr/bin/schemagen schemagen /usr/lib/jvm/${name}/bin/schemagen 180
sudo update-alternatives --install /usr/bin/serialver serialver /usr/lib/jvm/${name}/bin/serialver 180
sudo update-alternatives --install /usr/bin/servertool servertool /usr/lib/jvm/${name}/jre/bin/servertool 180
sudo update-alternatives --install /usr/bin/tnameserv tnameserv /usr/lib/jvm/${name}/jre/bin/tnameserv 180
sudo update-alternatives --install /usr/bin/unpack200 unpack200 /usr/lib/jvm/${name}/jre/bin/unpack200 180
sudo update-alternatives --install /usr/bin/wsgen wsgen /usr/lib/jvm/${name}/bin/wsgen 180
sudo update-alternatives --install /usr/bin/wsimport wsimport /usr/lib/jvm/${name}/bin/wsimport 180
sudo update-alternatives --install /usr/bin/xjc xjc /usr/lib/jvm/${name}/bin/xjc 180


Erstellen der 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 besitzt folgenden Inhalt und korrespondiert damit zu den oben installierten Alternativen aller Java Tools der beschriebenen Distribution.

name=jdk8u212-b03
alias=jdk8u212-b03
priority=1081
section=main

hl rmid /usr/lib/jvm/jdk8u212-b03/jre/bin/rmid
hl java /usr/lib/jvm/jdk8u212-b03/jre/bin/java
hl keytool /usr/lib/jvm/jdk8u212-b03/jre/bin/keytool
hl jjs /usr/lib/jvm/jdk8u212-b03/jre/bin/jjs
hl pack200 /usr/lib/jvm/jdk8u212-b03/jre/bin/pack200
hl rmiregistry /usr/lib/jvm/jdk8u212-b03/jre/bin/rmiregistry
hl unpack200 /usr/lib/jvm/jdk8u212-b03/jre/bin/unpack200
hl orbd /usr/lib/jvm/jdk8u212-b03/jre/bin/orbd
hl servertool /usr/lib/jvm/jdk8u212-b03/jre/bin/servertool
hl tnameserv /usr/lib/jvm/jdk8u212-b03/jre/bin/tnameserv
hl jexec /usr/lib/jvm/jdk8u212-b03/jre/lib/jexec
jre policytool /usr/lib/jvm/jdk8u212-b03/jre/bin/policytool
jdkhl idlj /usr/lib/jvm/jdk8u212-b03/bin/idlj
jdkhl jdeps /usr/lib/jvm/jdk8u212-b03/bin/jdeps
jdkhl wsimport /usr/lib/jvm/jdk8u212-b03/bin/wsimport
jdkhl rmic /usr/lib/jvm/jdk8u212-b03/bin/rmic
jdkhl jinfo /usr/lib/jvm/jdk8u212-b03/bin/jinfo
jdkhl jsadebugd /usr/lib/jvm/jdk8u212-b03/bin/jsadebugd
jdkhl native2ascii /usr/lib/jvm/jdk8u212-b03/bin/native2ascii
jdkhl jstat /usr/lib/jvm/jdk8u212-b03/bin/jstat
jdkhl javac /usr/lib/jvm/jdk8u212-b03/bin/javac
jdkhl javah /usr/lib/jvm/jdk8u212-b03/bin/javah
jdkhl jps /usr/lib/jvm/jdk8u212-b03/bin/jps
jdkhl jstack /usr/lib/jvm/jdk8u212-b03/bin/jstack
jdkhl jrunscript /usr/lib/jvm/jdk8u212-b03/bin/jrunscript
jdkhl javadoc /usr/lib/jvm/jdk8u212-b03/bin/javadoc
jdkhl javap /usr/lib/jvm/jdk8u212-b03/bin/javap
jdkhl jar /usr/lib/jvm/jdk8u212-b03/bin/jar
jdkhl extcheck /usr/lib/jvm/jdk8u212-b03/bin/extcheck
jdkhl schemagen /usr/lib/jvm/jdk8u212-b03/bin/schemagen
jdkhl xjc /usr/lib/jvm/jdk8u212-b03/bin/xjc
jdkhl jmap /usr/lib/jvm/jdk8u212-b03/bin/jmap
jdkhl jstatd /usr/lib/jvm/jdk8u212-b03/bin/jstatd
jdkhl jhat /usr/lib/jvm/jdk8u212-b03/bin/jhat
jdkhl jdb /usr/lib/jvm/jdk8u212-b03/bin/jdb
jdkhl serialver /usr/lib/jvm/jdk8u212-b03/bin/serialver
jdkhl wsgen /usr/lib/jvm/jdk8u212-b03/bin/wsgen
jdkhl jcmd /usr/lib/jvm/jdk8u212-b03/bin/jcmd
jdkhl jarsigner /usr/lib/jvm/jdk8u212-b03/bin/jarsigner
jdk appletviewer /usr/lib/jvm/jdk8u212-b03/bin/appletviewer
jdk jconsole /usr/lib/jvm/jdk8u212-b03/bin/jconsole