Update-Java-Alternativen vs Update-Alternativen --config Java

96

Auf Ubuntu 12.04 LTS habe ich Suns JDK7, Eclipse und die Arduino IDE installiert. Ich möchte, dass der Arduino OpenJDK 6 und Eclipse Suns JDK 7 verwendet.

Nach meinem Verständnis muss ich manuell auswählen, welches Java verwendet werden soll, bevor die einzelnen Anwendungen ausgeführt werden. Dies führte mich zum update-java-alternatives -lBefehl. Wenn ich das starte, sehe ich nur folgendes:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

aber wenn ich renne update-alternatives --config javasehe ich folgendes:

*0  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   auto mode
1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode
2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode
3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

Ich verstehe nicht, warum das update-java-alternativesnicht die gleichen 3 Wahlen anzeigt. Ich verstehe auch nicht, wie man zwischen OpenJDK6 und JDK7 wechselt. Wie kann ich OpenJDK6 für die Arduino-Entwicklung und Sun JDK7 für die Eclipse / Android-Entwicklung verwenden?

Stan Smith
quelle

Antworten:

126

sudo update-alternatives --config java

Konfiguriert den Standard für das Programm "Java". Das ist die Java VM.

sudo update-alternatives --config javac

Konfiguriert den Standard-Java-Compiler.

Sie können das auch sehen, weil der erste Befehl viele "JRE" -Ordner (Java Runtime Environment) auflistet und das Programm nur "java" heißt.

Wenn ich durch Ausgeben des Befehls überprüfe, welche Version verwendet wird, java -version oder wenn ich javac -versionsehe, dass jeder Befehl das verwendete Programm ändert.

Die Verwendung update-java-alternativesmit einer JDK-Version ändert jedoch beide Programme für mich. Mit den ersten Befehlen können Sie eine Java-VM und einen Java-Compiler aus verschiedenen JDKs verwenden.

Für update-java-alternatives muss eine Datei mit der Erweiterung .jinfo im Verzeichnis / usr / lib / jvm vorhanden sein. Das opendjk-Paket wird mit einer .jinfo-Datei ausgeliefert, das jdk von Oracle (ehemals Sun) nicht. Alternativ konfigurieren Sie Alternativen ohne update-java-alternatives :

Um beispielsweise Java aus dem JVM-Verzeichnis /usr/lib/jvm/jdk-12.0.1 ( Standardverzeichnis des Debian-Pakets von Oracle ) mit der Priorität 2082 hinzuzufügen , verwenden Sie den folgenden Befehl:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

Zum Umstieg auf verschiedene Entwicklungsumgebungen:

Wollen Sie die IDE selbst mit verschiedenen Java-Versionen starten oder verschiedene Versionen in der IDE zum Kompilieren und Ausführen Ihrer App verwenden?

Zu 1 .: Sie können wie hier beschrieben angeben, welche JVM in der eclipse.ini verwendet werden soll . Ich weiß nicht, wie ich das mit der Arduino IDE machen soll.

Zu 2 .: In Eclipse können Sie das JRE / JDK auswählen, das in Fenster -> Einstellungen -> Java -> Installierte JREs verwendet werden soll. Und unter Java -> Compiler können Sie auf Wunsch eine ältere Java-Kompatibilität auswählen.

BEARBEITEN: Diese DigitalOcean-Seite enthält auch eine sehr schöne Erklärung zu allem, was mit Java unter Ubuntu zu tun hat.

Benjamin Maurer
quelle
15

update-java-alternativesist ein Programm zum Aktualisieren von Alternativen für jre/jdkInstallationen.

update-alternatives ist ein symbolisches Link-Management-System für Linux (ich bin sicher, es gibt hier wenig Neues).

Sie können, und sollte wirklich, verwenden beide update-java-alternativesund update-alternativeszusammen.

Stellen Sie zunächst sicher, dass alle Alternativen korrekt konfiguriert sind. Java und Javac sind nur einige. Es ist javadoc, rmic, serialverund andere, die oben genannten Variablen zur Substitution: native2asciiund /opt/jdk1.8.0_40/bin/native2asciisollten berichten , wenn die Alternative installiert ist und / oder ausgewählt.

Wenn alle Alternativen konfiguriert sind, können Sie Links /usr/lib/jvmzu Ihrer manuellen Installation erstellen.

Zum Konfigurieren update-java-alternativesmüssen Sie eine versteckte Datei mit demselben Namen wie Ihr Verzeichnis verwenden, der jedoch das Präfix a vorangestellt ist. (Punkt).

Hoffe das hilft.

Literaturverzeichnis

man -S 8 update-java-alternatives

http://tech.lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu

fmmarques
quelle