Posso installare un Java a 32 bit oltre a una versione a 64 bit?


14

Per lo sviluppo normale sto usando la VM a 64 bit che viene fornita quando installo il kit di sviluppo Java (OpenJDK) con il gestore pacchetti.

Ma ci sono alcune applicazioni Java (contenenti librerie native, suppongo) che non funzionano su una VM Java a 64 bit. (Sembra che SoapUI sia un tale candidato - nella versione 4.0.1 e 4.5 beta 1, fallisce con un errore di segmentazione se eseguito in una VM a 64 bit.)

Ho provato a installare la versione i386 di openjdk-6-jre oltre a quella a 64 bit, ma questo è rifiutato da aptitude (dicendo che è in conflitto con la versione a 64 bit esistente). Lo stesso succede se provo a installare openjdk-jre-7 nella versione a 32 bit.

Una risposta a Posso eseguire un'applicazione Java a 32 bit su un sistema a 64 bit proposto per l'installazione ia32-sun-java6-bin, ma non esiste un pacchetto con questo nome (o qualsiasi cosa con ia32e Java).

Cosa posso fare qui per eseguire SoapUI senza passare a 32 bit l'intera installazione del sistema Java?


In realtà sono riuscito a eseguire soapUI con la versione a 64 bit modificando lo script della shell per passare alcuni parametri diversi. Dovrò cercare Cosa ho fatto esattamente.
Paŭlo Ebermann,

Vedere askubuntu.com/questions/111947/… per l'installazione di java a 64 e 32 bit dai repository. Puoi anche cambiare l'impostazione predefinita.
user68186

Risposte:


4

È semplicissimo installare più versioni di Java. Un po 'più difficile (leggi: noioso) è passare da una versione all'altra per un capriccio.

TLDR

  1. apt-get one
  2. untar l'altro
  3. esportare percorsi a seconda di quale si desidera

apt-get one version

Decidi quale versione utilizzerai principalmente. Oppure decidi quale vuoi avere aggiornamenti automatici. O lancia una moneta, qualunque cosa. Non devi nemmeno usare apt-get; mantieni manualmente entrambi i pacchetti sul tuo sistema (vedi intestazione successiva).

Il punto è: è più facile usare il gestore pacchetti di Ubuntu per mantenere esattamente una versione di un pacchetto come java. Al resto penserai tu.

untar l'altro

Scarica un tarball jdk. Estrai a /opt.

passare da una all'altra

Lascio che il gestore pacchetti gestisca la mia installazione principale. Esporta alcuni vars per l'altro quando ne ho bisogno. Lavoro molto sulla riga di comando, quindi è una soluzione valida per me. Mi preoccupo di:

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

Inoltre, ho un collegamento simbolico jdk/-> jdk1.6.0_3/perché sono pigro e non mi piace riconfigurare il mio .bashrc e altri script ogni aggiornamento jdk incrementale.

Variabili d'ambiente che potrebbero interessarti:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH

Non potresti anche ottenere .debl'altra architettura invece del tarball?
0xC0000022L

@ 0xC0000022L L'idea è che si contenga ciascuna versione nella propria directory. Se riesci a farlo con un deb, fantastico!
djeikyb,

2

Installazione

Innanzitutto, scarica l'ultimo JDK a 32 bit (non JRE) da Sun. All'epoca era per me jdk-6u7-linux-i586.bin.

Installa il pacchetto java:

sudo apt-get install java-package 

Ora usa java-package per creare un pacchetto .deb dal file binario che hai scaricato. Devi ingannarlo per creare il pacchetto a 32 bit:

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

Questo dovrebbe generare un pacchetto .deb. Per qualche ragione il nome del pacchetto ha il suffisso _amd64. Installa il pacchetto:

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

Utilizzare alternative di aggiornamento per selezionare il nuovo JDK. È stato installato su /usr/lib/j2sdk1.6-sun per me.

sudo update-alternatives --config java 

Se esegui java -version dovresti vedere la versione corretta:

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)

32 bit Eclipse

Ho dovuto reinstallare la versione a 32 bit di Eclipse (poiché SWT contiene codice nativo). Ho anche dovuto eliminare la mia directory ~ / .eclipse o Eclipse non si avviava (ciò richiede la reinstallazione di nuove versioni di eventuali plugin). Infine, aggiungi il nuovo JRE in Java-> JRE installati usando il percorso di installazione (/usr/lib/j2sdk1.6-sun) e selezionalo come predefinito.

arbitro


Grazie, proverò questo ... anche se non voglio che quello a 32 bit sia quello predefinito, usalo solo per i pochi programmi che non funzionano con 64 bit.
Paŭlo Ebermann,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.