1. Todos eles podem ser usados para carregar arquivos de biblioteca, sejam eles arquivos de biblioteca JNI ou arquivos de biblioteca não JNI. O arquivo de biblioteca JNI correspondente deve ser carregado usando um desses dois métodos antes de qualquer método nativo ser chamado.
2. O parâmetro System.load é o caminho absoluto do arquivo da biblioteca, que pode ser qualquer caminho.
Por exemplo, você pode carregar um arquivo de biblioteca JNI na plataforma Windows assim:
System.load("C://Documentos e Configurações//TestJNI.dll");.
3. O parâmetro System.loadLibrary é o nome do arquivo de biblioteca e não inclui a extensão do arquivo de biblioteca.
Por exemplo, você pode carregar um arquivo de biblioteca JNI na plataforma Windows como este
System.loadLibrary("TestJNI");
Aqui, TestJNI.dll deve estar no caminho apontado pela variável jvm java.library.path.
O valor desta variável pode ser obtido da seguinte forma:
System.getProperty("java.library.path");
Por padrão, nas plataformas Windows, esse valor contém os seguintes locais:
1) Alguns diretórios relacionados ao jre
2) Diretório atual do programa
3) Diretório do Windows
4) Diretório do sistema (system32)
5) O caminho da variável de ambiente do sistema especifica o diretório
4. Se o arquivo de biblioteca que você deseja carregar estiver vinculado estaticamente a outras bibliotecas de vínculo dinâmico, por exemplo, TestJNI.dll estiver vinculado estaticamente a dependency.dll, você deve prestar atenção a:
1) Se você escolher
System.load("C://Documentos e Configurações// TestJNI.dll");
Então, mesmo se você colocar dependency.dll em C://Documents and Settings //, o carregamento ainda falhará porque a dll dependente não pode ser encontrada. Porque quando a jvm carrega TestJNI.dll, ela primeiro carrega o arquivo de biblioteca dependency.dll do qual TestJNI.dll depende, e dependency.dll não está localizado no diretório especificado por java.library.path, então a jvm não consegue encontrar a dependência .dll.
Você tem duas maneiras de resolver este problema: primeiro, adicione C://Documents and Settings// ao caminho de java.library.path, por exemplo, adicione-o ao caminho do sistema. A segunda é ligar primeiro
System.load("C://Documents and Settings// dependency.dll"); Deixe o jvm carregar dependency.dll primeiro e depois chame System.load("C://Documents and Settings// TestJNI.dll"); );
2) Se você escolher
System.loadLibrary("TestJNI");
Então você só precisa colocar dependency.dll em qualquer caminho incluído em java.library.path, incluindo o mesmo diretório de TestJNI.dll.