Javaランタイムはx86_64であり、存在しますが、「該当するファイルまたはディレクトリがありません」というエラーは表示されません。

Javaランタイムはx86_64であり、存在しますが、「該当するファイルまたはディレクトリがありません」というエラーは表示されません。

ファイルが存在するが実行するように要求された場合、bashはそのファイルが存在しないと文句を言います。

$ ./Libs/openjdk-1.8.0_60-eap/bin/java
bash: ./Libs/openjdk-1.8.0_60-eap/bin/java: No such file or directory

$ ls -l ./Libs/openjdk-1.8.0_60-eap/bin/java
-rwxr-xr-x 1 spacecamel spacecamel 7734 Mar  4 03:27 ./Libs/openjdk-1.8.0_60-eap/bin/java

64ビットシステムで32ビットバージョンを実行すると、この問題が発生することがわかりました。残念ながら私にとってはそうではないようです。

$ file ./Libs/openjdk-1.8.0_60-eap/bin/java
./Libs/openjdk-1.8.0_60-eap/bin/java: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

$ uname -a
Linux <hostname> 3.14.34 #1-NixOS SMP Thu Jan 1 00:00:01 UTC 1970 x86_64 GNU/Linux

「」

ベストアンサー1

これは実際には間違ったアーキテクチャに関連する一般的なエラーです。ただし、これは実行可能ファイルを実行するために必要な必要なライブラリが見つからないことを示します。

Javaランタイム用のx86-64ライブラリをに追加するLD_LIBRARY_PATHか、それを含むディレクトリをディレクトリに追加する必要があります/etc/ld.so.conf.d/。これを行うには、まずパスを./Libs/openjdk-1.8.0_60-eap絶対パスに変換します。以下の提案では、次のように仮定します/opt/java/Libs/openjdk-1.8.0_60-eap

ルートアクセス権なし(またはテスト用)

export LD_LIBRARY_PATH=/opt/java/Libs/openjdk-1.8.0_60-eap
./Libs/openjdk-1.8.0_60-eap/bin/java

ルートアクセス権が必要です。

sudo -s
    echo /opt/java/Libs/openjdk-1.8.0_60-eap >>/etc/ld.so.conf.d/java
    ldconfig
./Libs/openjdk-1.8.0_60-eap/bin/java

おすすめ記事