JNI プロジェクトで依存ライブラリが見つからないことによる UnsatisfiedLinkError のトラブルシューティング
Java Native Interface (JNI) を使用する Java プロジェクトで作業しているときに、エラー「java.lang.UnsatisfiedLinkError: 依存ライブラリが見つかりません」イライラするかもしれません。このエラーは、Java 仮想マシン (JVM) がカスタム ライブラリに必要なネイティブ ライブラリ (この場合は mylib.dll) を見つけられない場合に発生します。
原因と解決策
元の投稿で言及されているいくつかの解決策を試したにもかかわらず、問題は未解決のままです。さらに考慮すべきトラブルシューティング手順は次のとおりです。
-
ライブラリの依存関係の確認:
Dependency Walker または同様のツールを使用して、mylib.dll に libsndfile-1 が明示的にリストされていることを確認します。 dll を依存関係として追加します。依存関係が欠落しているか正しくない場合、UnsatisfiedLinkError が発生する可能性があります。
-
Windows PATH を確認してください:
libsndfile-1.dll を含むディレクトリが Windows PATH 環境変数に含まれていることを確認してください。これにより、JVM が必要なライブラリを確実に見つけることができます。
-
Explore java.library.path:
提供されたソリューションで提案されているように、java.library.path の値を確認します。コマンド「java -XshowSettings:properties -version」を使用してシステム プロパティを設定します。このプロパティは、JVM によってネイティブ ライブラリを検索するパスを指定します。 mylib.dll と libsndfile-1.dll を含むディレクトリをこのパスに追加します。
-
ネイティブ ライブラリのロード メカニズムを検査する:
上記の手順が失敗した場合は、次の手順に使用されているメカニズムを検査することを検討してください。ネイティブライブラリをロードします。デフォルトでは、Java は「最初に見つかった」アプローチを使用し、指定された名前に一致するライブラリの最初のインスタンスをロードします。ロードされたライブラリに正しいバージョンと依存関係が存在することを確認してください。
追加のヒント
-
Use jna-platform: jna-platform ライブラリの利用を検討します。これは、プラットフォーム固有の依存関係を自動的に検出してロードし、ライブラリを簡素化できる可能性があります。読み込み中。
-
問題の状況を説明します: 使用されているオペレーティング システムと Java のバージョン、および関連するビルド スクリプトや構成に関する詳細情報を提供します。
以上がJNI プロジェクトで「java.lang.UnsatisfiedLinkError: 依存ライブラリが見つかりません」をトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。