Mehrere Java-Umgebungen auf demselben Linux-Computer

9

Was ist der effizienteste Weg, um mehrere gleichzeitige Java JDK-Versionen auf demselben Linux-Computer zu installieren ?

Ich brauche Java5, während mein aktuelles Ubuntu 9.10 Karmic mit Java6 geladen ist.

Ich weiß, dass ich eine VM dafür einrichten könnte, suche aber nach Alternativen.

jldupont
quelle

Antworten:

5

Wenn Sie die Linux-Binärdatei von Sun herunterladen , können Sie sie in einem beliebigen Verzeichnis installieren. Dann verweisen Sie einfach auf diese Bibliotheken in Ihrem Code, und Sie können loslegen.

Mit dem Binärinstallationsprogramm wird ein eigenes benanntes Unterverzeichnis erstellt (z. B. in Ihrem Beispiel /usr/java/jdk1.5.0_), sodass Sie so viele herunterladen können, wie Sie möchten Untergeschichten.

Die Haupt-Java-Binärdatei befindet sich in / usr / bin. Wenn Sie diese also bis zu dem Punkt ersetzen möchten, an dem bei der Eingabe von "Java" auf Java zugegriffen wird, und nicht auf diese, verschieben Sie einfach die alte aus / usr / bin und verlinken Sie Ihren neuen dort. Wenn which javaSie tippen , erfahren Sie, welches Java auf Ihrem System standardmäßig verwendet wird.

@jldupont: Wenn ich an gleichzeitige Installationen denke, denke ich an mehrere Versionen, die auf demselben Computer installiert sind, was meine Methode Ihnen absolut geben wird. Ich habe ungefähr 12 Java-Versionen auf meiner Produktionsbox installiert, um Hand-me-Downs von Unternehmen zu verarbeiten, die noch nicht aktualisiert wurden.

Allerdings , wenn Sie „java“ Typ sind Sie nur eine Version von Java gehend zu erhalten, da das ist , was in ist ‚/usr/bin'...You'd haben so etwas wie den Typ‘ /usr/java/jdk1.5.1/ bin / java ', um eine bestimmte Java-Binärdatei zu erhalten, die nicht die Systemvorgabe ist.

Satanicpuppy
quelle
Danke, aber ich brauche gleichzeitige Installationen. Wie mache ich das?
Jldupont
Vielen Dank. Ich habe jetzt JDK5 in / opt installiert und mir ein Bash-Skript geschrieben, um die Umgebungsvariablen einzurichten ... es sieht so aus, als ob es funktioniert. Ich dachte, es wäre schmerzhafter als das!
Jldupont
@jldupont: Eigentlich ist das eines der Dinge, die ich an Linux liebe ... Da es keine Registrierung gibt, die im Weg steht, können Sie dasselbe hundertmal installieren, und es ist kein Problem, solange Sie sicher gehen gemeinsame Dateien nicht zu überschreiben. Ich kenne viele Leute, die (zum Beispiel) mehrere verschiedene Versionen von Apache ausführen. Ich selbst neige dazu, mehrere Versionen von Perl und Java auszuführen.
Satanicpuppy
1

Laden Sie einfach die .bin-Datei von Oracle herunter und führen Sie sie aus, die sich dann selbst in einen Ordner extrahiert. Verschieben Sie diesen Ordner (z. B. jdk1.6.0_32) in / usr / lib / jvm und dann in das Skript, mit dem setjavaich Java-Versionen ändere. Aufgrund der exportAnweisungen müssen Sie jedoch im selben Terminal bleiben. Auch einige kleine JVM-Tools sind möglicherweise nicht eingestellt, aber ich denke, es sollte in den meisten Fällen funktionieren. Ich bin auch ein Shell Noob, also korrigiere mich bitte, wenn es eine bessere Möglichkeit gibt :-) Der Code für mich lautet:

#!/bin/bash
# shouldnt be used in a loop, else the path may become too long

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Not running as root"
    exit
fi

case "$1" in
  6)
    echo "Setting Java version 6"
    export PATH=/usr/lib/jvm/jdk1.6.0_32/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javaws /usr/bin/javaws
    javac -version    
    java -version
    ;;
  7)
    echo "Setting Java version 7"
    export PATH=/usr/lib/jvm/java-7-openjdk/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javaws /usr/bin/javaws
    javac -version
    java -version
    ;;
  *)
    echo "Usage: $0 {6|7}"

esac
exit 0
Konrad Höffner
quelle
Hoffner Ich bin mir nicht sicher, wie die Exportanweisungen funktionieren werden. Sie funktionieren nicht, wenn ich es versuche.
SureshS