Ubuntu 18.04 mit OpenJDK

aktu­al­isiert: 17-08-2022

Nach­dem ich nun endlich auf Ubun­tu 18.04 umgestiegen bin, habe ich mich auch gle­ich entschlossen, das Ora­cle-JDK, welch­es ich vorher über WebUpd8 instal­liert habe, durch das Open­JDK zu ersetzen.

In den Paketquellen find­et man hier zwei Versionen:

  • open­jdk-8-jdk mit openjdk-8-jre
  • open­jdk-11-jdk mit openjdk-11-jre
    Das Paket trägt die Ver­sion­snum­mer 11, jedoch ist hier noch die Ver­sion 10.0.2 enthal­ten. Sobald aber Ver­sion 11 ver­füg­bar ist, wird diese automa­tisch erset­zt (Ver­füg­barkeit ab dem 25.09.2018).

Instal­la­tion von OpenJDK:

sudo apt install openjdk-11-jdk openjdk-11-jre openjdk-8-jdk openjdk-8-jre

Für die tägliche Arbeit habe ich mich aber dafür entsch­ieden, weit­er­hin mit Ver­sion 8 zu arbeit­en. Ver­sion 11 ist mit dem Byte­code nicht mehr abwärt­skom­pat­i­bel, was bedeutet, dass meine ganzen alten JARs (z.B. Apache-ANT-Erweiterun­gen) nicht mehr laufen wür­den. Diese werde ich erst Schritt für Schritt umstellen.

Fes­tle­gen der Open­JDK-Ver­sion für java und javac:

sudo update-alternatives --config java
Es gibt 2 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).

  Auswahl      Pfad                                            Priorität Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      automatischer Modus
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manueller Modus
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 2

sudo update-alternatives --config javac
Es gibt 2 Auswahlmöglichkeiten für die Alternative javac (welche /usr/bin/javac bereitstellen).

  Auswahl      Pfad                                          Priorität Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/javac   1101      automatischer Modus
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/javac   1101      manueller Modus
* 2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 2

Der Test zeigt:

java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

javac -version
javac 1.8.0_181

Will ich mit Ver­sion 11 arbeit­en, dann wird der Such­p­fad entsprechend angepasst, beispiel­sweise direkt im Aufrufskript.

export JDK_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JDK_HOME/bin:$PATH

Prob­lem: jEd­it

Rufe ich jet­zt aber jEd­it auf, hat es gle­ich geknallt!

10:22:27 [main] [error] main: Exception in thread "main" 
10:22:27 [main] [error] main: java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper

Hier wird der Atk­Wrap­per nicht gefun­den. Lösen lässt sich das Prob­lem, indem man in der Kon­fig­u­ra­tions­datei /etc/java-11-openjdk/accessibility.properties(bzw. … java-8-openjdk …) die Zeile

assistive_technologies=org.GNOME.Accessibility.AtkWrapper

mit # auskommentiert.

JavaFX

JavaFX ist nicht mehr stan­dard­mäßig im Open­JDK enthal­ten. Man kann es aber sehr leicht nach installieren.
sudo apt install openjfx