Я чувствую, что это должно просто работать, но по какой-то причине это не так. Я ознакомился со следующим руководством Как мне установить проприетарную версию 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
Вы выполняете систему на 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 бита, но это - более высокая некромантия, о которой здесь даже не думало бы большинство людей на, и я, конечно, не свяжу ничего этого темного волшебства здесь.)