現時点での私のセットアップは次のとおりです。
- JNI ラッパー ライブラリを使用してネイティブ ライブラリとやり取りする機能を追加する Web アプリ (Tomcat に .war としてデプロイ)。
- ラッパー ライブラリ ssc.dll/so
- ラップされたライブラリ SSCAPIJNI.dll/so
- 両方のライブラリは、戦争で jar に埋め込まれています
- 戦争中、それらはパス /lib/linux/*.so および /lib/windows/*.dll にあります
- このヘルパー コードをこの方法で使用すると、アプリケーションは、私の Windows 開発環境と Linux ベースの継続的インテグレーション サーバーの両方で、ネイティブ コードを正常に抽出、読み込み、呼び出します。
- Eclipse を使用して、ローカルの開発環境でアプリケーションを実行および使用できます。
- CI は、ant と junit を使用してコードのテストを正常に実行します
ただし、戦争を QA サーバーに展開すると、UnsatisfiedLinkError
.
ラッパー ライブラリとラップされたライブラリが分離されているため、Java ライブラリの検索パスを正しく取得するだけでは十分ではありません。OS のネイティブ ライブラリの検索パスは、ラッパー ライブラリをロードするときにラップされたライブラリを確認する必要があり、これが障害の原因と思われます。2 つを一緒にコンパイルするオプションはありません。
私はこれにつまずいて成功しましたが、この現在の障害は「正しい方法」で修正したいものであるため、私の質問は次のとおりです。
2 番目のネイティブ ライブラリに依存する JNI ライブラリを Tomcat にデプロイし、Tomcat がラップされたライブラリを参照できるラッパー ライブラリを参照できるようにするための、正しく堅牢な方法は何ですか?