Environnement Java multiple sur la même machine Linux

9

Quelle est la manière la plus efficace d'installer plusieurs versions JDK Java simultanées sur la même machine Linux?

J'ai besoin de Java5 tandis que mon Ubuntu 9.10 Karmic actuel est livré avec Java6.

Je sais que je pourrais configurer une machine virtuelle pour cela, mais je cherche des alternatives.

jldupont
la source

Réponses:

5

Si vous téléchargez le binaire linux depuis Sun, vous pouvez l'installer dans le répertoire de votre choix. Ensuite, faites simplement référence à ces bibliothèques dans votre code, et vous êtes prêt à partir.

Avec le programme d'installation binaire, il créera son propre sous-répertoire nommé (par exemple dans votre exemple, /usr/java/jdk1.5.0_), afin que vous puissiez en télécharger autant que vous le souhaitez, et ils s'aligneront dans un nom approprié sous-drectories.

Le binaire java principal réside dans / usr / bin, donc si vous voulez le remplacer au point où lorsque vous tapez "java", il accède à votre java, et non à celui-ci, vous déplacez simplement l'ancien hors de / usr / bin , et associez-y votre nouveau. La saisie which javavous dira quel est le java par défaut sur votre système.

@jldupont: Quand je pense aux installations simultanées, je pense à plusieurs versions installées sur la même machine, ce que ma méthode vous donnera absolument. J'ai environ 12 versions de java installées sur ma boîte de production pour gérer les documents pratiques des entreprises qui n'ont pas encore été mis à jour.

Cependant, lorsque vous tapez "java", vous n'obtiendrez qu'une seule version de java, car c'est ce qui se trouve dans '/usr/bin'... Vous devez taper quelque chose comme' /usr/java/jdk1.5.1/ bin / java 'pour obtenir un binaire java spécifique qui n'est pas la valeur par défaut du système.

Satanicpuppy
la source
Merci mais j'ai besoin d' installations simultanées . Comment je fais ça?
jldupont
Merci. J'ai maintenant installé JDK5 dans / opt et me suis écrit un script bash pour configurer les variables d'environnement ... il semble que cela fonctionne. Je pensais que ce serait plus douloureux que ça!
jldupont
@jldupont: En fait, c'est une des choses que j'aime avec Linux ... Puisqu'il n'y a pas de registre pour vous gêner, vous pouvez installer la même chose cent fois, et ce n'est pas un problème tant que vous vous assurez pour ne pas écraser les fichiers communs. Je connais beaucoup de gens qui exécutent (par exemple) plusieurs versions différentes d'Apache. J'ai moi-même tendance à exécuter plusieurs versions de Perl et Java.
Satanicpuppy
1

Téléchargez et exécutez simplement le fichier .bin à partir d'Oracle qui s'extrait ensuite dans un dossier. Déplacez ce dossier (par exemple jdk1.6.0_32) dans / usr / lib / jvm puis le script setjavaque j'utilise pour changer les versions de java. En raison des exportdéclarations, vous devez cependant rester dans le même terminal. De plus, certains petits outils jvm peuvent ne pas être définis, mais je suppose que cela devrait fonctionner dans la plupart des cas. Je suis aussi un noob shell donc corrigez-moi s'il y a une meilleure possibilité :-) Le code pour moi est:

#!/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
la source
Hoffner Je ne sais pas comment les instructions d'exportation fonctionneront. Ils ne fonctionnent pas quand j'essaye.
SureshS