web-dev-qa-db-ja.com

64ビットJavaが機能していません

これは自然に機能するはずだと思いますが、何らかの理由で機能しません。次のガイドを読み終えました Sun/OracleのプロプライエタリJava JDK 6/7/8またはJREをインストールする方法 そして、すべてのヘルプが機能していないようです。

Oracleの64ビットJavaを機能させようとしています。

私はすでにppaを使用してJavaをインストールしました:

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.

そこで、手動でダウンロードすることにしました。 Oracleからtar.gzファイルを直接ダウンロードしました。

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

Ubuntuで64ビットを動作させるには、どんな助けも有益です。前もって感謝します。

EDITunameは思ったほど正確ではないことがわかりました。私は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
Aram Papazian

dpkg --print-architectureおよびfile /sbin/initの出力が示すように、32ビットシステムを実行しています。

他のコマンドunameは、実際には信頼性があります。64ビットLinux 4.0.4カーネルを実行しています。

Linux 4.0がまだUbuntuに同梱されていないということは、間違ったアーキテクチャが選択された最新のカーネルに手動でアップグレードした(または他の誰かがそれを行った)ことを示唆しています。

驚かれるかもしれませんが、64ビットカーネルを使用することは、64ビットでインストールされている依存関係が最小限であれば、32ビットのシステムで使用することも可能です。

Javaが32ビットとしてインストールされているという事実は、パッケージマネージャーdpkgがi386をネイティブアーキテクチャと見なし、対応するパッケージをインストールするためです。


ただし、64ビットJavaのインストールを強制することはできます。基本要件である64ビットカーネルは既に指定されています。したがって、dpkgに64ビットのインストールを許可するよう指示するだけです。

Sudo dpkg --add-architecture AMD64

その後、将来のパッケージのインストールで、目的の外部アーキテクチャを強制できるようになります。

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

現在、これにより、大量のパッケージ、つまりJavaのすべての依存関係と、それらの依存関係が64ビットでインストールされます(既に32ビットバージョンであっても)。

ただし、このようなハイブリッドシステムは不安定になる可能性があるため、システムを再インストールすることもできます。

(システムを64ビットに変換する方法はありますが、これはほとんどの人が思いもよらないほど高いネクロマンシーであり、このダークマジックをここでリンクすることはありません。)

0
s3lph