リンクをクリックして Web ブラウザーからダウンロードできるアプリ (Sigar) を開発しています。アプリケーションはマシン情報を監視しますが、そのためにはいくつかのライブラリ ファイル (libsigar-x86-linux.so、libsigar-x86-freebsd-5.so など) が必要です。
私の計画では、最初にネイティブ ファイルを JAR に入れ、次にアプリケーションが JWS でダウンロードされたときに、
- ネイティブ ライブラリを含む JAR ファイルをフォルダーに解凍します。
- アプリの実行時に決定された現在のクラスパスを見つけます。
- 最後に、java.library.path をクラスパスに相対的に設定して、ネイティブ ライブラリを見つけられるようにします。
現在、次のコードを使用して JAR のパスを特定しようとしています。
String path = MyClass.class.getProtectionDomain()
.getCodeSource().getLocation().getPath();
しかし、返されたパスは Web サービス パスであり、ローカル環境のものではないため、何か間違ったことをしているに違いありません。
現在の計画の間違いを誰か指摘してもらえますか? ありがとう。