私のアプリケーションは、次の 3 つのコンポーネントで構成されています。
- アプレット
- Java プログラム (myapp.jar)
- JNI ライブラリ (myjni.so)
JNI ライブラリは 32 ビット用に構築されていることに注意してください。32 ビット OS では、アプレットはjava.home
プロパティを使用して JRE パスを取得します。アプレットが JRE パスを取得すると、次のように JAR を起動します
JRE-path myapp.jar
ここで、このアプリケーションを 64 ビット Linux で実行する必要があります。ここで 2 つのオプションがあります。
- 64 ビット用の JNI ライブラリをビルドします。依存するライブラリはすべて 64 ビット用にビルドする必要があるため、これは不可能です。(これは私の最後の制約です)
- ユーザーに 32 ビット JVM のインストールを依頼する ここでの問題は、
java.home
プロパティが 64 ビット JRE パスを提供するため、32 ビット JRE パスを取得する方法です。(ブラウザとプラグインが 64 ビットであるため)。1 つのオプションは、update-alternatives –list java
コマンドを使用してすべての JRE インストール パスを取得することです。次に、インストール パスごとにJRE-path -d32 –version
コマンドを実行して、32 ビット JVM をサポートしているかどうかを確認します。
- 32 ビット JVM をサポートしている場合は、その JRE パスを使用して JAR ファイルを起動します。
- どの Java インストールも 32 ビット JVM をサポートしていない場合は、32 ビット JVM をインストールするようにメッセージを表示します
質問:
- 上記の解決策に問題はありますか?(Ubuntu、Redhat、および OpenSuse でこのソリューションを使用する必要があります)
- 64ビットLinuxで32個のJREパスを取得するためのより良い解決策はありますか?