web-dev-qa-db-fra.com

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

Pour le développement normal, j'utilise le VM 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 64 bits Java. (On dirait que SoapUI est un tel candidat - dans les versions 4.0.1 et 4.5 beta 1, il échoue avec une erreur 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 que cela entre 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 Java application 32 bits sur un système 64 bits a proposé d'installer ia32-Sun-Java6-bin, mais il n'y a pas de paquetage portant ce nom (ni rien avec ia32 et Java) .

Que pourrais-je faire ici pour exécuter SoapUI sans basculer l’ensemble de mon système Java en 32 bits?

14
Paŭlo Ebermann

Il est très facile d'installer plusieurs versions de Java. Un peu plus difficile (lire: fastidieux) est de basculer entre les versions à la fantaisie.

tldr

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

apt-get one version

Choisissez la version que vous utiliserez le plus souvent. Ou décidez lequel vous voulez avoir des mises à jour automatiques. Ou lancer une pièce de monnaie, peu importe. Vous n'avez même pas à utiliser apt-get; maintenez simplement les deux paquets manuellement sur votre système (voir l’en-tête suivant).

Le fait est qu'il est plus facile d'utiliser le gestionnaire de paquets d'Ubuntu pour gérer exactement une version d'un paquet comme Java. Tu vas t'occuper du reste.

détacher l'autre

Téléchargez une archive jdk. Extrayez-le dans /opt.

basculer entre eux

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

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

De plus, je lie symboliquement jdk/ -> jdk1.6.0_3/ parce que je suis paresseux et n’aime pas reconfigurer mon .bashrc et d’autres scripts à chaque mise à niveau incrémentielle de jdk.

Les variables d'environnement qui pourraient vous intéresser:

Java_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
Java_HOME
PATH
4
djeikyb

Installation

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

Installez Java-package:

Sudo apt-get install Java-package 

Maintenant, utilisez Java-package pour construire un package .deb à partir du binaire que vous avez téléchargé. Vous devez tromper dans la construction du paquet 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 paquet .deb. Pour une raison quelconque, le nom du package a le suffixe _AMD64. Installez le paquet:

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 version correcte:

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 (car SWT contient du code natif). Je devais également supprimer mon répertoire ~/.Eclipse, sinon Eclipse ne pourrait pas démarrer (cela impliquerait de réinstaller les 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

2
Ringtail

Ou vous ne pouvez installer que ia32-libs

 apt-get install ia32-libs

décompressez le x86 jre

http://javadl.Sun.com/webapps/download/AutoDL?BundleId=6398

et ajoutez à PATH si vous le souhaitez.

1
MaikoID