Ich habe zwei JAVA JREs auf meinem neuen CentOS installiert, da Cassandra Java7u25 oder höher benötigt, während iReport mit 1.6 arbeiten muss.
Wie starte ich nun jedes Programm über die Befehlszeile und sage jedem Programm, welche Version verwendet werden soll?
Muss ich die /etc/profile
Datei ändern ? Wenn das so ist, wie?
Java6 path/to/iReport
undJava7 path/to/Cassandra
oder unter Angabe eines vollständigen Pfads zur ausführbaren Java-Datei ausführen/path/to/Java
Antworten:
Es macht keinen Sinn, beide zu haben,
$PATH
weil sich nur einer daran gewöhnt. Sie könnten einen mit einem anderen Namen verknüpfen - z. B.java6
- ich habe dieses W / Java noch nie ausprobiert und bin mir nicht sicher, ob es funktionieren würde.Der beste Weg, dies zu tun, wäre, einen von ihnen (vermutlich 1.6) an einem Ort wie zu installieren
/opt/java6
, wobei 1.7 als Standard verbleibt. Wenn Sie dann 6 verwenden möchten:Und starten Sie es über die Befehlszeile. Sie können das alles auch in einem Skript zusammenfassen. Versuchen Sie danach nicht, Cassandra von derselben Shell aus auszuführen, es sei denn, Sie entfernen diese aus
$PATH
(einfache Möglichkeit, dies zu überprüfenecho $PATH
).So automatisieren Sie dies für eine bestimmte Anwendung:
Sie können das dann irgendwo in das reguläre
$PATH
(z. B./usr/local/bin
) einfügen, sicherstellen, dass es ausführbar ist (chmod 755 whatever.sh
) und die Anwendung auf diese Weise starten. Dies wirkt sich dann nicht auf$PATH
den Prozess aus, der es startet.quelle
export
) ändern und dann iReport starten. Die Verwendung von zwei separaten Registerkarten in einem GUI-Terminal funktioniert hierfür. Ich habe in dem, was ich mit "dies in ein Skript einfügen" meinte, bearbeitet, wenn Sie das tun möchten.JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk yourprogram
aber ich habe Schwierigkeiten damit auf Debian.update-alternatives --config java
aber Sie müssten dies jedes Mal ändern, wenn Sie zwischen Anwendungen wechseln. Der grundlegende Befehl "java" verweist nur auf eine der Versionen in / usr / libs / jvm. Wenn Sie eine Java-Quelle anstelle eines vorkompilierten Bytecodes erhalten haben, müssen Sie möglicherweise auch ändern,javac
welche Java kompiliert wird.Dies funktioniert sowohl beim Starten von einem Terminalemulator als auch von einem Desktop-Symbolstarter für ein Programm, das mit meinem Standard-OpenJRE-11 nicht ausgeführt werden kann. Verwenden von Debian-10 Buster mit XFCE
/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication'
Könnte auch versuchen:JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication
Sie können auch einen Alias für jede Java-Version erstellen, sodass etwas Kurzes wie j8o =
/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH
und der letzte alltägliche Befehl lautetj8o ./myapplication
Um die Standard-Java zu ändern,
update-alternatives --config java
folgen Sie der Eingabeaufforderung. Das gleiche kann verwendet werden, um bei Bedarf die Standardeinstellung für javac (den Bytecode-Compiler) festzulegen. Benötigt möglicherweise sudo, um die Standardeinstellung zu ändern.quelle