Java 8 vs. Java 1.8 Installation (Verzeichnisname)

7

Irgendwie habe ich zwei Verzeichnisse für OpenJdk 8 auf meinem Ubuntu 16.04-System gefunden:

  1. /usr/lib/jvm/java-8-openjdk-amd64
  2. /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 HelloWorldeine vorhandene HelloWorld.classDatei bearbeite, erhalte ich nichts, aber wenn ich dies tue, /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java HelloWorldwird 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 8Verzeichnis und nicht auf das Verzeichnis, 1.8was 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.

ankush981
quelle
Welche openjdk-8-Pakete haben Sie auf Ihrem System installiert?
Anwar
1
@Anwar Ich bin nicht sicher, wie ich die Liste bekommen soll, aber wenn ich auf Tab Autocomplete apt remove openjdk-8-jopenjdk-8-jdk openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless
drücke,

Antworten:

2

Wählen Sie die Java-Version:

sudo update-alternatives --config java

Beispielausgabe:

There are 2 choices for the alternative java (providing usr/bin/java).         
Selection     Path                                            Priority  Status
------------------------------------------------------------
  0           /usr/lib/jvm/java-8-oracle/jre/bin/java          1081     auto mode
  1           /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081     manual mode
* 2           /usr/lib/jvm/java-8-oracle/jre/bin/java          1081     manual mode

Press <enter> to keep the current choice[*], or type selection number: 

Sie können auch die Alternativen für sehen java, javacindem Sie die --listOption verwenden:

sudo update-alternatives --list java
sudo update-alternatives --list javac
Benny
quelle
Vielen Dank, aber hier ist, was ich in der Ausgabe bekomme (Bereitstellung eines Pastebin-Links aufgrund von Formatierungsproblemen): pastebin.com/yt0S0Adw Ich weiß, dass etwas in meinem System nicht stimmt. Ich habe vielleicht etwas durcheinander gebracht.
ankush981
0

Okay, das Problem in meinem Fall war, dass ich openjdk unwissentlich auch kopflos installiert hatte und somit zwei Installationen hatte. Ich habe endlich alle JDKS von meinem System entfernt und JDK 9 installiert (was keine problemlose Installation ist, könnte ich hinzufügen!) Und jetzt scheint alles sortiert zu sein!

ankush981
quelle