web-dev-qa-db-fra.com

Java 64 bits ne fonctionne pas

Je pense que cela devrait fonctionner naturellement, mais pour une raison quelconque, ce n'est pas le cas. J'ai parcouru le guide suivant Comment installer les logiciels propriétaires de Sun/Oracle Java JDK 6/7/8 ou JRE? Et il semble que tous les l'aide ne fonctionne pas.

J'essaie de faire fonctionner le 64 bits d'Oracle Java.

J'ai déjà installé Java en utilisant le ppa:

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java8-installer

Mais ensuite, il a téléchargé la version 32 bits pour une raison quelconque:

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.

J'ai donc décidé de faire un téléchargement manuel. J'ai téléchargé le fichier tar.gz directement chez Oracle:

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

et était capable d'extraire tout, mais pour une raison quelconque, lorsque j'essaie d'exécuter Java, j'obtiens une erreur.

~/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

Comme vous le voyez, le fichier est là, mais pas là au même moment. Ce qui est hyper déroutant. J'ai ensuite pensé que je n'avais peut-être pas réellement de version Ubuntu 64 bits, mais j'ai vérifié et (si je lis tout correctement), il semble que j'ai ubuntu 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

De plus, j'ai essayé la même chose avec la version 7, et openjdk utilise également la version 7. Les deux ont fait la version 32 bits. Vous pouvez voir toutes mes versions de Java ici:

$ 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

Toute aide serait utile pour que le 64 bits fonctionne sur Ubuntu. Merci d'avance.

EDIT Il s'avère qu'uname n'est pas aussi précis que je le pensais. Il se trouve que je suis sur une machine 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
2
Aram Papazian

Vous utilisez un système 32 bits, comme le suggèrent les résultats de vos dpkg --print-architecture et file /sbin/init.

L'autre commande, uname, est en fait fiable: vous utilisez un noyau Linux 4.0.4 64 bits.

Le visage que Linux 4.0 n’est pas encore livré avec Ubuntu suggère que vous ayez effectué une mise à niveau manuelle vers le noyau le plus récent (ou que quelqu'un l’ait fait pour vous), dans laquelle la mauvaise architecture a été choisie.

Vous serez peut-être surpris, mais il est en effet possible d'utiliser un noyau 64 bits avec un système autrement 32 bits, à condition qu'un minimum de dépendances soit également installé en 64 bits.

Le fait que votre Java soit installé en tant que 32 bits est dû au fait que le gestionnaire de paquets, dpkg, voit i386 comme architecture native et installe par conséquent le paquet correspondant.


Vous pouvez toutefois forcer l’installation de Java 64 bits. L'exigence de base, un noyau 64 bits, est déjà donnée. Il suffit donc d'indiquer à dpkg d'autoriser les installations 64 bits:

Sudo dpkg --add-architecture AMD64

Ensuite, vous devriez pouvoir forcer une architecture étrangère souhaitée sur les futures installations de paquet:

Sudo apt-get install Oracle-Java8-installer:AMD64

Maintenant, cela peut installer un tas de paquets, à savoir toutes les dépendances pour Java et leurs dépendances de manière récursive, toutes en 64 bits, même si vous les avez déjà dans une version 32 bits.

Un tel système hybride peut toutefois être instable, vous pouvez donc choisir de le réinstaller.

(Il existe des moyens de transformer votre système en 64 bits, mais il s'agit d'une nécromancie plus élevée à laquelle la plupart des gens ici ne penseraient même jamais, et je ne lierai certainement rien de cette magie noire ici.)

0
s3lph