Irgendwie habe ich zwei Verzeichnisse für OpenJdk 8 auf meinem Ubuntu 16.04-System gefunden:
/usr/lib/jvm/java-8-openjdk-amd64
/usr/lib/jvm/java-1.8.0-openjdk-amd64
Das Problem ist, dass das erste Verzeichnis beschädigt zu sein scheint. Wenn ich /usr/lib/jvm/java-8-openjdk-amd64/bin/java HelloWorld
eine vorhandene HelloWorld.class
Datei bearbeite, erhalte ich nichts, aber wenn ich dies tue, /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java HelloWorld
wird die erwartete Ausgabe erzeugt.
Nun sieh dir das an:
core$ ll /etc/alternatives/jav*
lrwxrwxrwx 1 root root 42 Nov 7 11:02 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/bin/java*
lrwxrwxrwx 1 root root 52 Nov 2 19:32 /etc/alternatives/java.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/java.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javac.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 45 Nov 2 19:35 /etc/alternatives/javadoc -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc*
lrwxrwxrwx 1 root root 55 Nov 2 19:35 /etc/alternatives/javadoc.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javah -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javah*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javah.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javap -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javap*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javap.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javap.1.gz
Alle diese verweisen auf das 8
Verzeichnis und nicht auf das Verzeichnis, 1.8
was beim Ausführen von Programmen zu Problemen führt. Meine Frage ist: Wie kam es zu diesem Durcheinander und wie lässt sich das am besten lösen? Ich möchte alles andere entfernen und OpenJDK 8 als Standard-JDK verwenden.
apt remove openjdk-8-j
openjdk-8-jdk openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless