Puis-je installer un Java 32 bits en plus d'une version 64 bits?

14

Pour un développement normal, j'utilise la machine virtuelle 64 bits qui vient lorsque j'installe le kit de développement Java (OpenJDK) avec le gestionnaire de packages.

Mais il existe certaines applications Java (contenant des bibliothèques natives, je suppose) qui ne fonctionnent pas sur une machine virtuelle Java 64 bits. (On dirait que SoapUI est un tel candidat - dans les versions 4.0.1 et 4.5 beta 1, il échoue avec un défaut de segmentation s'il est exécuté sur une machine virtuelle 64 bits.)

J'ai essayé d'installer la version i386 de openjdk-6-jre en plus de la version 64 bits, mais cela est refusé par aptitude (en disant qu'elle est en conflit avec la version 64 bits existante). La même chose se produit si j'essaie d'installer openjdk-jre-7 dans la version 32 bits.

Une réponse à Puis-je exécuter une application Java 32 bits sur un système 64 bits proposé à installer ia32-sun-java6-bin, mais il n'y a pas de package avec ce nom (ou quoi que ce soit avec ia32et Java).

Que puis-je faire ici pour exécuter SoapUI sans basculer toute mon installation Java sur 32 bits?

Paŭlo Ebermann
la source
J'ai réussi à exécuter soapUI avec la version 64 bits en modifiant le script shell pour passer un paramètre différent. Je vais devoir chercher ce que j'ai fait exactement.
Paŭlo Ebermann
Voir askubuntu.com/questions/111947/… pour installer à la fois 64 bits et 32 ​​bits java à partir des référentiels. Vous pouvez également modifier la valeur par défaut.
user68186

Réponses:

4

C'est super facile d'avoir plusieurs versions de Java installées. Un peu plus difficile (lire: fastidieux) est de basculer entre les versions à un caprice.

tldr

  1. apt-get one
  2. dégager l'autre
  3. exporter les chemins en fonction de celui que vous voulez

apt-get one version

Décidez quelle version vous utiliserez principalement. Ou décidez lequel vous souhaitez avoir des mises à jour automatiques. Ou lancez une pièce, peu importe. Vous n'avez même pas besoin d'utiliser apt-get; il suffit de maintenir manuellement les deux packages sur votre système (voir la rubrique suivante).

Le point est: il est plus facile d'utiliser le gestionnaire de paquets d'Ubuntu pour maintenir exactement une version d'un paquet comme java. Tu vas prendre soin du reste.

dégager l'autre

Téléchargez un tarball jdk. Extrayez-le /opt.

basculer entre eux

Je laisse le gestionnaire de packages gérer mon installation principale. J'exporte des vars pour l'autre quand j'en ai besoin. Je travaille beaucoup sur la ligne de commande, c'est donc une bonne solution pour moi. Je m'embête avec:

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH

De plus, je crée un lien symbolique jdk/-> jdk1.6.0_3/parce que je suis paresseux et que je n'aime pas reconfigurer mon .bashrc et d'autres scripts à chaque mise à niveau incrémentielle de jdk.

Variables d'environnement qui pourraient vous intéresser:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH
djeikyb
la source
Ne pourriez-vous pas tout aussi bien obtenir .debpour l'autre architecture au lieu de l'archive tar?
0xC0000022L
@ 0xC0000022L L'idée est que vous conteniez chaque version dans son propre répertoire. Si vous pouvez le faire avec un deb, tant mieux!
djeikyb
2

Installation

Tout d'abord, téléchargez le dernier JDK 32 bits (pas JRE) de Sun. À l'époque, c'était jdk-6u7-linux-i586.bin pour moi.

Installez le paquet java:

sudo apt-get install java-package 

Utilisez maintenant java-package pour construire un package .deb à partir du binaire que vous avez téléchargé. Vous devez le piéger dans la construction du package 32 bits:

DEB_BUILD_GNU_TYPE=i486-linux-gnu DEB_BUILD_ARCH=i386 fakeroot make-jpkg jdk-6u7-linux-i586.bin 

Cela devrait générer un package .deb. Pour une raison quelconque, le nom du package a le suffixe _amd64. Installez le package:

sudo dpkg -i sun-j2sdk1.6_1.6.0+update7_amd64.deb 

Utilisez update-alternatives pour sélectionner le nouveau JDK. Il a été installé à /usr/lib/j2sdk1.6-sun pour moi.

sudo update-alternatives --config java 

Si vous exécutez java -version, vous devriez voir la bonne version:

java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

Eclipse 32 bits

J'ai dû réinstaller la version 32 bits d'Eclipse (puisque SWT contient du code natif). J'ai également dû supprimer mon répertoire ~ / .eclipse ou Eclipse ne démarrerait pas (cela nécessite la réinstallation de nouvelles versions de tous les plugins). Enfin, ajoutez le nouveau JRE dans Java-> JRE installés à l'aide de l'emplacement d'installation (/usr/lib/j2sdk1.6-sun) et sélectionnez-le par défaut.

ref

Ringtail
la source
Merci, je vais essayer ceci ... bien que je ne veuille pas que celui 32 bits soit la valeur par défaut, ne l'utilisez que pour les quelques programmes qui ne fonctionnent pas avec 64 bits.
Paŭlo Ebermann