1. Sie können alle zum Laden von Bibliotheksdateien verwendet werden, unabhängig davon, ob es sich um JNI-Bibliotheksdateien oder Nicht-JNI-Bibliotheksdateien handelt. Die entsprechende JNI-Bibliotheksdatei muss mit einer dieser beiden Methoden geladen werden, bevor eine native Methode aufgerufen wird.
2. Der Parameter System.load ist der absolute Pfad der Bibliotheksdatei, der ein beliebiger Pfad sein kann.
Sie können beispielsweise eine JNI-Bibliotheksdatei unter der Windows-Plattform wie folgt laden:
System.load("C://Dokumente und Einstellungen//TestJNI.dll");.
3. Der Parameter System.loadLibrary ist der Name der Bibliotheksdatei und enthält nicht die Erweiterung der Bibliotheksdatei.
So können Sie beispielsweise eine JNI-Bibliotheksdatei unter der Windows-Plattform laden
System.loadLibrary („TestJNI“);
Hier muss sich TestJNI.dll in dem Pfad befinden, auf den die JVM-Variable java.library.path zeigt.
Der Wert dieser Variablen kann wie folgt ermittelt werden:
System.getProperty("java.library.path");
Unter Windows-Plattformen enthält dieser Wert standardmäßig die folgenden Speicherorte:
1) Einige Verzeichnisse im Zusammenhang mit jre
2) Aktuelles Verzeichnis des Programms
3) Windows-Verzeichnis
4) Systemverzeichnis (system32)
5) Der Pfad der Systemumgebungsvariablen gibt das Verzeichnis an
4. Wenn die Bibliotheksdatei, die Sie laden möchten, statisch mit anderen dynamischen Linkbibliotheken verknüpft ist, beispielsweise ist TestJNI.dll statisch mit dependency.dll verknüpft, müssen Sie Folgendes beachten:
1) Wenn Sie möchten
System.load("C://Dokumente und Einstellungen// TestJNI.dll");
Selbst wenn Sie dependency.dll unter C://Dokumente und Einstellungen/ ablegen, schlägt der Ladevorgang dennoch fehl, da die abhängige DLL nicht gefunden werden kann. Denn wenn der JVM TestJNI.dll lädt, lädt er zuerst die Bibliotheksdatei dependency.dll, von der TestJNI.dll abhängt, und dependency.dll befindet sich nicht in dem durch java.library.path angegebenen Verzeichnis, sodass der JVM keine Abhängigkeit finden kann .dll.
Sie haben zwei Möglichkeiten, dieses Problem zu lösen: Fügen Sie zunächst C://Documents and Settings/ zum Pfad von java.library.path hinzu, beispielsweise zum Systempfad. Die zweite besteht darin, zuerst anzurufen
System.load("C://Documents and Settings// dependency.dll"); Lassen Sie den JVM zuerst dependency.dll laden und rufen Sie dann System.load("C://Documents and Settings// TestJNI.dll" auf. );
2) Wenn Sie möchten
System.loadLibrary („TestJNI“);
Dann müssen Sie nur noch dependency.dll in einen beliebigen Pfad einfügen, der in java.library.path enthalten ist, einschließlich desselben Verzeichnisses wie TestJNI.dll.