1. Todos se pueden utilizar para cargar archivos de biblioteca, ya sean archivos de biblioteca JNI o archivos de biblioteca que no sean JNI. El archivo de biblioteca JNI correspondiente debe cargarse utilizando uno de estos dos métodos antes de llamar a cualquier método nativo.
2. El parámetro System.load es la ruta absoluta del archivo de la biblioteca, que puede ser cualquier ruta.
Por ejemplo, puede cargar un archivo de biblioteca JNI en la plataforma Windows de esta manera:
System.load("C://Documentos y configuraciones//TestJNI.dll");.
3. El parámetro System.loadLibrary es el nombre del archivo de la biblioteca y no incluye la extensión del archivo de la biblioteca.
Por ejemplo, puede cargar un archivo de biblioteca JNI en la plataforma Windows como este
System.loadLibrary ("PruebaJNI");
Aquí, TestJNI.dll debe estar en la ruta señalada por la variable jvm java.library.path.
El valor de esta variable se puede obtener de la siguiente manera:
System.getProperty("java.library.path");
De forma predeterminada, en plataformas Windows, este valor contiene las siguientes ubicaciones:
1) Algunos directorios relacionados con jre
2) Directorio actual del programa.
3) directorio de Windows
4) Directorio del sistema (system32)
5) La ruta de la variable de entorno del sistema especifica el directorio
4. Si el archivo de biblioteca que desea cargar está vinculado estáticamente a otras bibliotecas de vínculos dinámicos, por ejemplo, TestJNI.dll está vinculado estáticamente a dependency.dll, entonces debe prestar atención a:
1) Si tu eliges
System.load("C://Documentos y configuraciones// TestJNI.dll");
Entonces, incluso si coloca dependency.dll en C://Documentos y configuraciones//, la carga seguirá fallando porque no se puede encontrar el dll dependiente. Porque cuando la jvm carga TestJNI.dll, primero cargará el archivo de biblioteca dependency.dll del que depende TestJNI.dll, y dependency.dll no se encuentra en el directorio especificado por java.library.path, por lo que la jvm no puede encontrar la dependencia. .dll.
Tiene dos formas de resolver este problema: primero, agregue C://Documents and Settings// a la ruta de java.library.path, por ejemplo, agréguelo a la ruta del sistema. El segundo es llamar primero.
System.load("C://Documentos y configuraciones// dependency.dll"); Deje que la jvm cargue dependency.dll primero y luego llame a System.load("C://Documentos y configuraciones// TestJNI.dll" );
2) Si eliges
System.loadLibrary ("PruebaJNI");
Luego solo necesita colocar dependency.dll en cualquier ruta incluida en java.library.path, incluido el mismo directorio que TestJNI.dll.