2

CORBA を利用する既存の Java アプリケーションがあります。その結果、java.endorsed.dirsコマンド ライン パラメータを使用して、使用している CORBA ライブラリを含むディレクトリを指定します。アプリケーションは現在、次のコマンド ラインで問題なく実行されています。

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -jar "myapp.jar"

ここで、アプリケーションに WorldWind サポートを追加する必要があります。WorldWind jar ファイルはネイティブ ライブラリを呼び出し、java.library.pathコマンド ライン パラメーターを使用して、ネイティブ ライブラリを含むディレクトリを指すように指示しているようです。次のコマンド ラインを使用する場合 (java.library.path を追加):

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -Djava.library.path="./lib" -jar "myapp.jar"

アプリケーションを実行すると、次のエラーが表示されます。

..Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path    

「gluegen-rt」は、WorldWind が使用するライブラリの 1 つです。上記の例外は、WorldWind ライブラリを見つけるのに苦労しているということです

コマンドラインから java.endorsed.dirs ディレクトリを削除すると

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.library.path="./lib" -jar "myapp.jar"

...その後、私のアプリケーションは正常に動作します (ただし、現在はデフォルトの CORBA 実装を使用しており、製品に同梱されているものではありません)。

このトピックで見つけた唯一のリンクはこちらですが、その質問には答えがないようだったので、ここで質問しようと思いました.

これら 2 つのコマンド ライン パラメーターは共存できますか? そうでない場合、回避策はありますか?

注: Red Hat Linux でこれを実行しています。受け取ったコメントに基づいて、アプリを実行する前に LD_LIBRARY_PATH を設定してみました。それは何の違いもありませんでした。

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:./lib

注:エンド ユーザーのセットアップに基づいて、CORBA ファイルを標準の jre /endorsed ディレクトリに配置することはできません。

注:この質問は CORBA や WorldWind に固有のものではないと思いますが、前述のコマンド ライン パラメーターの両方を使用している理由を説明したいと思います。

4

1 に答える 1

1

私は自分の特定の状況に対して回避策があります。両方のコマンド ライン パラメータ (java.endorsed.dirs と java.library.path) が同じディレクトリを指していました。それらを別のディレクトリを指すように変更すると、機能し始めました。WorldWind ライブラリを lib/worldwind に移動して、コマンド ラインが次のようになるようにしました。

java -splash:images/logo.png -Xms64m -Xmx1024m -Djava.endorsed.dirs=./lib -Djava.library.path="./lib/worldwind" -jar "myapp.jar"

これがこの問題を抱えている他の人に役立つことを願っています。そもそもなぜ「衝突」があったのかはまだわかりませんが。

于 2012-09-11T02:45:47.223 に答える