1. Ils peuvent tous être utilisés pour charger des fichiers de bibliothèque, qu'il s'agisse de fichiers de bibliothèque JNI ou de fichiers de bibliothèque non JNI. Le fichier de bibliothèque JNI correspondant doit être chargé à l'aide de l'une de ces deux méthodes avant l'appel d'une méthode native.
2. Le paramètre System.load est le chemin absolu du fichier de bibliothèque, qui peut être n'importe quel chemin.
Par exemple, vous pouvez charger un fichier de bibliothèque JNI sous la plateforme Windows comme ceci :
System.load("C://Documents and Settings//TestJNI.dll");.
3. Le paramètre System.loadLibrary est le nom du fichier de bibliothèque et n'inclut pas l'extension du fichier de bibliothèque.
Par exemple, vous pouvez charger un fichier de bibliothèque JNI sous la plateforme Windows comme ceci
Système.loadLibrary ("TestJNI");
Ici, TestJNI.dll doit se trouver dans le chemin pointé par la variable jvm java.library.path.
La valeur de cette variable peut être obtenue comme suit :
System.getProperty("java.library.path");
Par défaut, sous les plateformes Windows, cette valeur contient les emplacements suivants :
1) Quelques répertoires liés à jre
2) Répertoire actuel du programme
3) Répertoire Windows
4) Répertoire système (system32)
5) Le chemin de la variable d'environnement système spécifie le répertoire
4. Si le fichier de bibliothèque que vous souhaitez charger est lié statiquement à d'autres bibliothèques de liens dynamiques, par exemple, TestJNI.dll est lié statiquement à dependency.dll, alors vous devez faire attention à :
1) Si vous choisissez
System.load("C://Documents and Settings// TestJNI.dll");
Ensuite, même si vous placez dependency.dll sous C://Documents and Settings//, le chargement échouera toujours car la DLL dépendante est introuvable. Parce que lorsque la JVM charge TestJNI.dll, elle chargera d'abord le fichier de bibliothèque dependency.dll dont dépend TestJNI.dll, et dependency.dll n'est pas situé dans le répertoire spécifié par java.library.path, donc la JVM ne peut pas trouver de dépendance. .dll.
Vous avez deux manières de résoudre ce problème : Tout d'abord, ajoutez C://Documents and Settings// au chemin de java.library.path, par exemple, ajoutez-le au chemin système. La seconde est d'appeler en premier
System.load("C://Documents and Settings// dependency.dll"); Laissez d'abord la machine virtuelle Java charger dependency.dll, puis appelez System.load("C://Documents and Settings// TestJNI.dll" );
2) Si vous choisissez
Système.loadLibrary ("TestJNI");
Ensuite, il vous suffit de placer dependency.dll dans n'importe quel chemin inclus dans java.library.path, y compris le même répertoire que TestJNI.dll.