Estou acessando DLLs usando JNA e dentro do Netbeans funciona normalmente, porém quando compilo meu projeto e executo o programa através do arquivo .jar o sistema não consegue encontrar a DLL e apresenta o seguinte erro:
Unable to load library ‘C:\Users\jonas\Documents\NetBeansProjects\SysPDV/dllsatelgin32Bts.dll’: Não foi possível encontrar o módulo especificado.
segue o como estou carregando a DLL:
String caminho = System.getProperty(“user.dir”)
dllSat = (MinnhaDllSAT) Native.loadLibrary(caminho + “/dllsatelgin32Bts.dll”, MinnhaDllSAT.class);
Por que dentro do Netbeans ele encontra o arquivo e com o .jar não?
Unable to load library ‘C:\Users\jonas\Documents\NetBeansProjects\SysPDV/dllsatelgin32Bts.dll’: Não foi possível encontrar o módulo especificado.
Tenta usar essa barra “/” como separador de caminho ao invés dessa “”.
E confirma o caminho do arquivo, pega essa uri que ele tá reclamando cola no Explorer sem a parte do dll no final, pra ver de chega na pasta
Já tentei usar essa barra, mas nada, já coloquei a DLL em outra pasta, já dei permissão na pasta onde está a DLL e se eu colocar o caminho no Explorer chega na pasta sim.
O mais estranho é que testei 4 computadores diferente, e em um deles o sistema conseguiu encontrar a DLL
Já tentasse rodar o jar como administrador ?
Eu até tentei, mas não achei a opção para fazer isso no .jar, até mesmo se eu criar um atalho o jar não tem a opção de executar com ADM
Se clicar com o direito do mouse e ir em propriedades -> compatibilidade, lá tem um checkbox pra executar como administrador
No .jar não tem, isso geralmente aparece em .exe
Depois de muito tentar consegui descobrir qual era o problema… a DLL que eu estou utilizando é 32bits e a versão do JDK instala para usar o Netbeans é 32 bits, porém eu tinha uma versão de 64 bits no meu PC e o sistema operacional utilizava ela como default, já que o meu Windows é 64 bits, então eu desinstalei a versão 64 bits e problema resolvido.