Posso instalar um Java de 32 bits, além de uma versão de 64 bits?

14

Para desenvolvimento normal, estou usando a VM de 64 bits que vem quando instalo o Java development kit (OpenJDK) com o gerenciador de pacotes.

Mas existem alguns aplicativos Java (contendo bibliotecas nativas, suponho) que não funcionam em uma Java VM de 64 bits. (Parece que o SoapUI é um candidato - nas versões 4.0.1 e 4.5 beta 1, ele falha com uma falha de segmentação se executado em uma VM de 64 bits.)

Tentei instalar a versão i386 do openjdk-6-jre, além da de 64 bits, mas isso foi recusado pelo aptitude (dizendo que entra em conflito com a versão de 64 bits existente). O mesmo acontece se eu tentar instalar o openjdk-jre-7 na versão de 32 bits.

Uma resposta para Posso executar um aplicativo Java de 32 bits em um sistema de 64 bits proposto para instalação ia32-sun-java6-bin, mas não há pacote com esse nome (ou qualquer coisa com ia32e Java).

O que eu poderia fazer aqui para executar o SoapUI sem mudar minha instalação Java do sistema inteiro para 32 bits?

Paŭlo Ebermann
fonte
Na verdade, eu consegui executar o soapUI com a versão de 64 bits editando o script de shell para passar alguns parâmetros diferentes. Vou ter que procurar O que exatamente eu fiz.
Paŭlo Ebermann
Consulte askubuntu.com/questions/111947/… para instalar java de 64 e 32 bits a partir dos repositórios. Você também pode alterar o padrão.
user68186

Respostas:

4

É super fácil ter várias versões do Java instaladas. Um pouco mais difícil (leia-se: tedioso) é alternar entre versões por um capricho.

tldr

  1. apt-get one
  2. desatar o outro
  3. caminhos de exportação, dependendo de qual você deseja

apt-get uma versão

Decida qual versão você usará principalmente. Ou decida qual você deseja ter atualizações automáticas. Ou jogue uma moeda, qualquer que seja. Você nem precisa usar apt-get; apenas mantenha manualmente os dois pacotes no seu sistema (veja o próximo cabeçalho).

O ponto é: é mais fácil usar o gerenciador de pacotes do Ubuntu para manter exatamente uma versão de um pacote como java. Você vai cuidar do resto.

desatar o outro

Faça o download de um tarball jdk. Extraia para /opt.

alternar entre eles

Deixei o gerenciador de pacotes lidar com minha instalação principal. Eu exporto alguns vars para o outro quando preciso. Eu trabalho muito na linha de comando, por isso é uma solução adequada para mim. Eu me preocupo com:

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

Além disso, faço o link simbólico jdk/-> jdk1.6.0_3/porque sou preguiçoso e não gosto de reconfigurar meu .bashrc e outros scripts a cada atualização incremental do jdk.

Variáveis ​​de ambiente importantes para você:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH
djeikyb
fonte
Você não poderia obter .deba outra arquitetura em vez do tarball?
0xC0000022L
@ 0xC0000022L A ideia é que você contenha cada versão em seu próprio diretório. Se você pode fazer isso com uma deb, ótimo!
21813 djeikyb
2

Instalação

Primeiro, baixe o JDK de 32 bits mais recente (não o JRE) da Sun. Na época, isso era jdk-6u7-linux-i586.bin para mim.

Instale o pacote java:

sudo apt-get install java-package 

Agora use o java-package para criar um pacote .deb a partir do binário que você baixou. Você precisa enganá-lo para criar o pacote de 32 bits:

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

Isso deve gerar um pacote .deb. Por alguma razão, o nome do pacote possui o sufixo _amd64. Instale o pacote:

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

Use as alternativas de atualização para selecionar o novo JDK. Foi instalado em /usr/lib/j2sdk1.6-sun para mim.

sudo update-alternatives --config java 

Se você executar o java -version, deverá ver a versão correta:

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

Eu tive que reinstalar a versão de 32 bits do Eclipse (já que o SWT contém código nativo). Eu também tive que excluir meu diretório ~ / .eclipse ou o Eclipse não seria iniciado (isso requer a reinstalação de novas versões de qualquer plug-in). Por fim, inclua o novo JRE em Java-> JREs Instalados usando o local de instalação (/usr/lib/j2sdk1.6-sun) e selecione-o como padrão.

ref

Ringtail
fonte
Obrigado, vou tentar isso ... embora eu não queira o padrão de 32 bits, use-o apenas para alguns programas que não trabalham com 64 bits.
Paŭlo Ebermann 7/03/12