java de 64 bits não funciona

1

Eu sinto que isso deveria funcionar naturalmente, mas por alguma razão não é. Eu passei pelo seguinte guia Como posso instalar Sun / Oracle é proprietário do Java JDK 6/7/8 ou JRE? E parece que toda a ajuda não está funcionando.

Estou tentando fazer com que o Java 64 bits do oracle funcione.

Eu já instalei o java usando o ppa:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Mas, então, baixou a versão de 32 bits por algum motivo:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode)
$ java -d64
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.

Então eu decidi fazer um download manual. Eu baixei o arquivo tar.gz do oracle diretamente:

jdk-7u79-linux-x64.tar.gz

e foi capaz de extrair tudo, mas por algum motivo, quando tento rodar o java, recebo um erro.

~/jdk1.7.0_79/bin$ ./java
-bash: ./java: No such file or directory
~/jdk1.7.0_79/bin$ file java
java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, BuildID[sha1]=0x68582ab83ddaf6429310a6f841f0adda165ce880, not stripped

Então, como você vê, o arquivo está lá, mas também não está lá ao mesmo tempo. Que é hiper confuso. Em seguida pensei que talvez eu não tivesse uma versão de 64 bits do Ubuntu, mas eu verifiquei e (se estou lendo tudo corretamente) parece que eu tenho o Ubuntu de 64 bits:

$ uname -a
Linux random 4.0.4-x86_64-linode57 #1 SMP Thu May 21 11:01:47 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

Além disso, tentei a mesma coisa com a versão 7 e o openjdk também usa a versão 7. Ambos fizeram a versão de 32 bits. Você pode ver todas as minhas versões do java aqui:

$ update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-oracle/jre/bin/java         1053      auto mode
  1            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java         1052      manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java         1053      manual mode
  4            /usr/lib/jvm/jdk1.8.0_05/bin/java               1         manual mode

Qualquer ajuda seria benéfica para obter 64 bits trabalhando no Ubuntu. Agradecemos antecipadamente.

EDITAR Acontece que o uname não é tão preciso quanto eu pensava. Acontece que estou em uma máquina de 32 bits:

$dpkg --print-architecture
i386
$ file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x07075fcb55b05aeb6286efabba63534fa6ecd213, stripped
    
por Aram Papazian 31.05.2015 / 15:10

1 resposta

0

Você está executando um sistema de 32 bits, como a saída do seu dpkg --print-architecture e file /sbin/init sugere.

O outro comando, uname , é de fato confiável: você está executando um kernel Linux 4.0.4 de 64 bits.

O cara que o Linux 4.0 ainda não é enviado com o Ubuntu sugere que você atualizou manualmente para o kernel mais recente (ou alguém fez isso para você), no qual a arquitetura errada foi escolhida.

Você pode se surpreender, mas é de fato possível usar um kernel de 64 bits com um sistema que é 32 bits em outro lugar, contanto que um mínimo de dependências também seja instalado em 64 bits.

O fato de seu Java estar sendo instalado como 32bit é devido ao fato de que o gerenciador de pacotes, dpkg, vê i386 como a arquitetura nativa e, portanto, instala o pacote correspondente.

Você pode, no entanto, forçar a instalação do Java de 64 bits. O requisito base, um kernel de 64 bits, já é dado. Então você só precisa dizer ao dpkg para permitir instalações de 64 bits:

sudo dpkg --add-architecture amd64

Então você deve ser capaz de forçar uma arquitetura estrangeira desejada em futuras instalações de pacotes:

sudo apt-get install oracle-java8-installer:amd64

Agora, isso pode instalar muitos pacotes, a saber, todas as dependências para Java e suas dependências recursivamente, todas em 64 bits, mesmo se você já as tiver em uma versão de 32 bits.

Esse sistema híbrido pode, no entanto, ser instável, então você pode optar por reinstalar o sistema.

(Existem maneiras de transformar seu sistema em 64 bits, mas isso é uma necromancia mais alta que a maioria das pessoas daqui nunca imaginaria, e certamente não ligarei nada dessa magia negra aqui.)

    
por s3lph 01.06.2015 / 21:43