64-битная Java не работает

Я чувствую, что это должно просто работать, но по какой-то причине это не так. Я ознакомился со следующим руководством Как мне установить проприетарную версию Sun JDK 6/7/8 или JRE от Sun / Oracle? И похоже, что вся помощь не работает.

Я пытаюсь заставить работать 64-битную Java-версию оракула. ​​

Я уже установил java с помощью ppa:

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

Но потом он почему-то скачал 32-битную версию:

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.

Поэтому я решил сделать руководство скачать. Я скачал файл tar.gz из oracle напрямую:

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

и смог извлечь все, но по какой-то причине, когда я пытаюсь запустить Java, я получаю ошибку.

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

Итак, как вы видите, файл есть, но не существует одновременно. Что очень запутанно. Затем я подумал, что, может быть, у меня на самом деле не было 64-битной версии Ubuntu, но я проверил и (если я все правильно читаю) похоже, что у меня есть 64-битная Ubuntu:

$ 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

Кроме того, я попробовал то же самое с версией 7, и openjdk также использует версию 7. Оба они сделали 32-битную версию. Вы можете увидеть все мои версии java здесь:

$ 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

Любая помощь будет полезна для того, чтобы 64-битная работа работала на Ubuntu. Заранее спасибо.

РЕДАКТИРОВАТЬ Оказывается, uname не так точно, как я думал. Оказывается, я на 32-битной машине:

$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
задан 13 April 2017 в 15:23

1 ответ

Вы выполняете систему на 32 бита, как вывод Вашего dpkg --print-architecture и file /sbin/init предполагает.

другая команда, uname, на самом деле надежна: Вы запускаете Linux на 64 бита 4.0.4 ядра.

поверхность, что Linux 4.0 еще не поставляется с Ubuntu, предполагает, что Вы вручную обновили до новейшего ядра (или кто-то еще сделал это для Вас), в котором была выбрана неправильная архитектура.

Вы можете быть удивлены, но действительно возможно использовать ядро на 64 бита с системой, которая составляет elsewise 32 бита, пока минимум зависимостей также установлен в 64 битах.

то, что Ваш Java устанавливается как 32 бита, - то, вследствие того, что диспетчер пакетов, dpkg, рассматривает i386 как собственную архитектуру и следовательно устанавливает соответствующий пакет.

<час>

можно, однако, вызвать установку Java на 64 бита. Основное требование, ядро на 64 бита, уже дано. Таким образом, только необходимо сказать dpkg позволять установки на 64 бита:

sudo dpkg --add-architecture amd64

Тогда необходимо быть в состоянии вызвать желаемую внешнюю архитектуру на будущих установках пакета:

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

Теперь, это может установить партию ада пакетов, а именно, все зависимости для Java и их зависимости рекурсивно, все в 64 битах, даже если у Вас уже есть они в версии на 32 бита.

Такая гибридная система может, однако, быть нестабильной, таким образом, можно хотеть принять решение переустановить систему.

(Существуют способы превратить Вашу систему в 64 бита, но это - более высокая некромантия, о которой здесь даже не думало бы большинство людей на, и я, конечно, не свяжу ничего этого темного волшебства здесь.)

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: