:scrambleup: De novo eu e JNI… Acontece que eu estou usando JNI, sabe? Vejam isso:
public static boolean prepararIceJniRegistryDll(){
try{
Properties sysProperties = System.getProperties();
File iceJniRegistryDll = new File(DLL_PATH + "/ICE_JNIRegistry.dll");
if(!iceJniRegistryDll.canRead()){
throw new FileNotFoundException("ICE_JNIRegistry.dll nao encontrada.");
}
String iceJniRegistryDllPath = iceJniRegistryDll.getAbsolutePath();
System.out.println(iceJniRegistryDllPath);
sysProperties.setProperty("java.library.path", iceJniRegistryDllPath);
}
catch(FileNotFoundException fileNotFoundException){
return false;
}
catch(Exception exception){
System.err.println("Outra excecao lancada em prepararIceJniRegistryDll");
return false;
}
return true;
}
Isso é o meu código para preparar o uso dessa dll que eu preciso pro JNI. Vale dizer que DLL_PATH é o caminho relativo para a pasta onde estão minhas dlls. Assim ó: tem uma pasta raiz e nela tem meus pacotes (br.inf.lalalalalala.blablabla) e tem um diretório lib onde está a DLL. O negócio é que esse código aí, no System.out.println() que ele tem, imprime:
:arrow: C:dir_RaizlibICE_JNIRegistry.dll
Mas, logo na linha abaixo, quando ele coloca a ICE_JNIRegistry.dll nas propriedades do sistema, ele lê o arquivo (ou parece fazer isso) como se fosse:
:arrow: C:dir_RaizICE_JNIRegistry.dll
Sei disso porque o código só funciona (cadastra a dll nas propriedades do sistema e deixa meu resto de programa que depende dela rodar) se a ICE_JNIRegistry.dll estiver na raiz e na pasta lib… Que tosco! Por que isso acontece? O que faço pra fazer funcionar direito??