¿Puedo instalar un Java de 32 bits además de una versión de 64 bits?

14

Para el desarrollo normal, estoy usando la máquina virtual de 64 bits que viene cuando instalo el kit de desarrollo de Java (OpenJDK) con el administrador de paquetes.

Pero hay algunas aplicaciones Java (que contienen bibliotecas nativas, supongo) que no funcionan en una máquina virtual Java de 64 bits. (Parece que SoapUI es un candidato de este tipo: en la versión 4.0.1 y 4.5 beta 1, falla con una falla de segmentación si se ejecuta en una VM de 64 bits).

Traté de instalar la versión i386 de openjdk-6-jre además de la de 64 bits, pero esto es rechazado por aptitude (diciendo que está en conflicto con la versión de 64 bits existente). Lo mismo sucede si intento instalar openjdk-jre-7 en la versión de 32 bits.

Una respuesta a ¿Puedo ejecutar una aplicación Java de 32 bits en un sistema de 64 bits que se propone instalar ia32-sun-java6-bin, pero no hay un paquete con este nombre (ni nada con ia32Java).

¿Qué podría hacer aquí para ejecutar SoapUI sin cambiar todo el sistema de instalación de Java a 32 bits?

Paŭlo Ebermann
fuente
Realmente logré ejecutar soapUI con la versión de 64 bits editando el script de shell para pasar algún parámetro diferente. Tendré que buscar qué hice exactamente.
Paŭlo Ebermann
Consulte askubuntu.com/questions/111947/… para instalar java de 64 bits y 32 bits desde los repositorios. También puede cambiar el valor predeterminado.
user68186

Respuestas:

4

Es muy fácil tener instaladas varias versiones de Java. Algo más difícil (léase: tedioso) es cambiar entre versiones a su antojo.

tldr

  1. apt-get one
  2. deshacer el otro
  3. exporta rutas dependiendo de cuál quieras

apt-get one version

Decide qué versión usarás principalmente. O decida cuál desea tener actualizaciones automáticas. O lanzar una moneda, lo que sea. Ni siquiera tiene que usar apt-get; solo mantenga manualmente ambos paquetes en su sistema (vea el siguiente encabezado).

El punto es: es más fácil usar el administrador de paquetes de Ubuntu para mantener exactamente una versión de un paquete como java. Te encargarás del resto.

deshacer el otro

Descargue un tarball jdk. Extraerlo a /opt.

cambiar entre ellos

Dejo que el administrador de paquetes maneje mi instalación principal. Exporto algunos vars para el otro cuando lo necesito. Trabajo mucho en la línea de comandos, por lo que es una buena solución para mí. Me molesto con:

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

Además, hago un enlace simbólico jdk/-> jdk1.6.0_3/porque soy vago y no me gusta reconfigurar mi .bashrc y otros scripts en cada actualización incremental de jdk.

Variables de entorno que pueden interesarle:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH
djeikyb
fuente
¿No podrías obtener .debla otra arquitectura en lugar del tarball?
0xC0000022L
@ 0xC0000022L La idea es que contenga cada versión en su propio directorio. Si puedes hacer eso con un deb, ¡genial!
djeikyb
2

Instalación

Primero, descargue el último JDK de 32 bits (no JRE) de Sun. En el momento esto era jdk-6u7-linux-i586.bin para mí.

Instalar java-package:

sudo apt-get install java-package 

Ahora use java-package para construir un paquete .deb desde el binario que descargó. Tienes que engañarlo para construir el paquete de 32 bits:

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

Esto debería generar un paquete .deb. Por alguna razón, el nombre del paquete tiene el sufijo _amd64. Instala el paquete:

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

Utilice las alternativas de actualización para seleccionar el nuevo JDK. Fue instalado en /usr/lib/j2sdk1.6-sun para mí.

sudo update-alternatives --config java 

Si ejecuta java -version, debería ver la versión correcta:

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 de 32 bits

Tuve que reinstalar la versión de 32 bits de Eclipse (ya que SWT contiene código nativo). También tuve que eliminar mi directorio ~ / .eclipse o Eclipse no se iniciaría (esto requiere reinstalar nuevas versiones de cualquier complemento). Finalmente, agregue el nuevo JRE en Java-> JRE instalados utilizando la ubicación de instalación (/usr/lib/j2sdk1.6-sun) y selecciónelo como predeterminado.

árbitro

Cola de anillo
fuente
Gracias, intentaré esto ... aunque no quiero que el de 32 bits sea el predeterminado, solo lo uso para los pocos programas que no funcionan con 64 bits.
Paŭlo Ebermann