Beheben von UnsatisfiedLinkError in JNI-Projekten: Fehlende abhängige Bibliotheken
In einem JNI-Projekt ein UnsatisfiedLinkError mit der Meldung „Kann abhängige Bibliotheken nicht finden.“ " kann auftreten, wenn eine benutzerdefinierte Bibliothek wie mylib.dll auf a angewiesen ist Bibliothek eines Drittanbieters (z. B. libsndfile-1.dll), die im Systemsuchpfad nicht verfügbar ist. Um dieses Problem zu beheben, müssen mehrere wichtige Schritte befolgt werden:
-
Stellen Sie die korrekte DLL-Platzierung sicher: Platzieren Sie sowohl die benutzerdefinierte DLL (mylib.dll) als auch die erforderliche Abhängigkeit (libsndfile- 1.dll) im selben Verzeichnis wie die JAR-Datei der Java-Anwendung.
-
Überprüfen Sie die DLL-Funktion Benennung: Überprüfen Sie, ob die Funktionsnamen in der benutzerdefinierten DLL genau mit denen übereinstimmen, die in der JNI-Header-Datei definiert sind. Passen Sie bei Bedarf die Linker-Flags im Build-Prozess an, um eine korrekte Methodenbenennung sicherzustellen.
-
Windows-spezifisches Verhalten berücksichtigen: Unter Windows, wenn die Systemeigenschaft java.library.path nicht explizit angegeben ist festgelegt ist, muss sich die DLL im aktuellen Arbeitsverzeichnis oder einem Verzeichnis befinden, das in der Windows PATH-Umgebung enthalten ist Variable.
Zusätzliche Tipps zur Fehlerbehebung:
-
Warnungen von Dependency Walker überprüfen: Auch wenn Dependency Walker ungelöste Importe für MPR anzeigt .DLL und SHLWAPI.DLL können diese Warnungen oft ignoriert werden, wie im DW erwähnt FAQ.
-
Suchpfad der gemeinsam genutzten Bibliothek prüfen: Verwenden Sie den Befehl „java -XshowSettings:properties -version“ (verfügbar in Java 8 und höher), um den Suchpfad der gemeinsam genutzten Bibliothek anzuzeigen und zu überprüfen Auf die erforderlichen DLLs kann zugegriffen werden.
-
Klassenpfadprobleme beseitigen: Der Klassenpfad und der Suchpfad der gemeinsam genutzten Bibliothek sind getrennt und unabhängig. Stellen Sie sicher, dass alle erforderlichen JAR-Dateien korrekt im Klassenpfad enthalten sind.
Durch sorgfältiges Befolgen dieser Schritte können Entwickler UnsatisfiedLinkErrors im Zusammenhang mit fehlenden abhängigen Bibliotheken in JNI-Projekten beheben, sodass ihre Anwendungen reibungslos laufen.
Das obige ist der detaillierte Inhalt vonWarum gibt mein JNI-Projekt „UnsatisfiedLinkError: Abhängige Bibliotheken können nicht gefunden werden' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!