私はJava.lang.Systemにいくつかのネイティブコードを呼び出すカスタムメソッドを実装しました。私はbootclasspathを使ってこのクラスをJavaのブートストラップで見つけ、jdkのlibパスにネイティブライブラリを置きます。これは、正常なJavaアプリケーションのために完全に正常に動作しますが、私はこれをtomcatの下で実行したいと思います。tomcatブートストラップローダーのネイティブライブラリ
jdkのlibとtomcatの共有/ libの両方にライブラリを配置しましたが、動作していないようです。 UnsatisfiedLinkError:ネイティブライブラリが既に別のクラスローダに読み込まれています。 Tomcatが独自のブートストラップローダーを使用しているかどうかは不明です。
いずれにしても、ブートストラップクラス(rt.jar)の独自のネイティブライブラリを取得してTomcatをロードするにはどうすればよいですか?
「Tomcatのパスからネイティブライブラリを保持してください」...これについて詳しく説明できますか?また、ネイティブへのメソッド呼び出しもUnsatisfiedLinkErrorで失敗するため、ライブラリが一度ロードされたかどうかはわかりません。 – akula1001
@ manu1001私は、Tomcatのディレクトリからすぐに立ち去るときに、ネイティブライブラリよりJARの方が多く考えていました。スタンドアロンJavaアプリケーションでネイティブライブラリをロードするために使用するJVMパラメータは何ですか? -Djava.library.path = <ネイティブライブラリへのパス>を使用して、JAVA_HOME経由でjava.library.pathシステムプロパティを設定すると動作する場合があります。 – prunge
このライブラリはブートストラップクラスによってロードされるため、java.library.pathは設定されません。 javaは、ブートストラップクラスのネイティブをロードするためにsun.boot.class.pathを使用します。しかし、これは[この問題]のために設定することはできません。(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4285197)私はlibをすでに定義されているboot.class.pathに置きました。スタンドアロンJavaでは動作しましたが、Tomcatでは動作しませんでした。 – akula1001