私は64ビットのDebian Mintマシンで32ビットのHotspot JVMを実行しようとしています。一見すると、Swingを使用して何かを実行しようとするまで、すべてうまくいきます。
Java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so:
libXext.so.6: cannot open shared object file: No such file or directory
これをライブラリパスに追加します:export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
。
しかし、それはこのエラーを出します:
Java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so:
libXext.so.6: wrong ELF class: ELFCLASS64
ここで他に何をしなければならないか?
32ビットのJVMを使用できるようにするには、32ビットの互換性ライブラリをインストールする必要があります。 2番目のエラーメッセージは、32ビットJVMプロセスが64ビットライブラリをロードしようとしていることを意味します。それは機能しません。
Ubuntuでは、パッケージia32-libs
をインストールする必要があります。これには、64ビットUbuntu用の32ビット互換ライブラリが含まれています。
[〜#〜] update [〜#〜]:Ubuntu 13.10は、ia32-libs
をlibstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
で置き換えるマルチアーチを導入しました。ソース: https://stackoverflow.com/a/10473415/14731
私はちょうどUbuntu 14.04で同じ問題を抱えていましたが、32ビットのOracle Javaを64ビットのインストールで維持したかったのです。ia32-libsはUbuntu 13.10以降、現在はglib答えは、「必要なi386ライブラリをダウンロードするだけ」です残念ながら、それらがどのライブラリであるかを見つける簡単な方法はないようです。
簡単な解決策は、32ビットOpenJDKを次のようにインストールすることです。
Sudo apt-get install openjdk-7-jdk:i386
これにより、多数のi386ライブラリが取り込まれます。必要に応じてOpenJDKを再度アンインストールできますが、ライブラリを誤って自動削除しないように、そのまま残しておきます。
Oracle JDKをPATHに置くと、EclipseとNetBeansが正常に起動します。
CentOS 6.4でも同様の問題があり、解決策はia32-libsの同等のものを(ルートとして)インストールすることでした:yum install glibc.i686 libXext.i686 libXtst.i686
32ビット参照を使用する場合は、64ビットJVMを使用してください。 Java 6 update 23。
http://docs.Oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html
@Hot Licksは、IBM JVMは「32/64ビットモード」で最大68 GBにアクセスできるとコメントしています。
この量より多く使用する必要がある場合(または実際にそれと同じようなもの)、ヒープメモリを使用します。これにより、完全なGC時間を制御でき、常に32ビット参照を使用できます。