[解決済み] JNIプロジェクトでUnsatisfiedLinkError (Can't find dependent libraries)が発生した場合の対処方法
質問
私はJNIを使用するJavaプロジェクトに取り組んでいます。 JNIは、私自身が書いたカスタムライブラリ(仮にmylib.dllとします)を呼び出し、それはサードパーティライブラリ、libsndfile-1.dllに依存しています。
私のプログラムを実行すると、次のようにクラッシュします。
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
このサイト(や他のサイト)を検索して、いろいろな修正を試しました。
-
dependency walkerを実行しました。DW はいくつかの警告を出しました -- libsndfile が必要とする二つのライブラリ MPR.DLL と SHLWAPI.DLL に "unresolved imports" があること -- しかし DW FAQ これらの警告は無視しても問題ないとのことでした。
-
提案されたように、mylib.dllのメソッド名を修正しました。 こちら . このメソッド名は、コンパイラによって何らかの形で混乱していましたが、リンカフラグを追加したところ、DLLのメソッド名は、私のjniヘッダーファイルのものと正確に一致するようになりました。
-
これらのDLLをすべて同じディレクトリ、つまりそれらを呼び出す.jarと同じディレクトリに置いて、正しいPATHにあることを確認しました。
ダメでした。
どなたか心当たりのある方はいらっしゃいますか?
私はMacBook pro(Parallels経由)でVisual Studio 2010で開発をしています。テストは東芝のノートパソコンでWindows XPで行っています。
どのように解決するのですか?
クラスパスと共有ライブラリの検索パスはあまり関係ないと思うのですが。 によると
JNIブック
(確かに古いですが) Windows では、もし
java.library.path
システム・プロパティを使用する場合、DLL は現在の作業ディレクトリか、Windows の [ファイル] メニューにあるディレクトリにある必要があります。
PATH
環境変数
更新しました。
オラクルは、そのウェブサイトからPDFを削除したようです。 私は上のリンクを更新し、テキサス大学アーリントン校にあるPDFのインスタンスを指すようにしました。
また、オラクルのHTML版も読むことができます。 JNI仕様書 . これは、JavaウェブサイトのJava 8のセクションにあるので、しばらくは使えると思います。
アップデート2
少なくともJava 8では(それ以前のバージョンは未確認)できます。
java -XshowSettings:properties -version
を使って、共有ライブラリの検索パスを探します。 の値を探します。
java.library.path
プロパティが出力されます。
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] java.lang.ClassCastException: java.util.Arrays$ArrayList は java.util.ArrayList にキャストできません。
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?