Olá pessoal, bem depois de muita luta, consegui resolver o problema de acessar uma dll pelo java.
Agora o que está acontecendo é algo muito estranho, pois a implementação não funciona apenas no projeto que deveria funcionar. Ou seja: se eu criar outro projeto, rodar pelo NetBeans, tudo funciona.
O erro é o seguinte:
Exception in thread "Timer-0" java.lang.UnsatisfiedLinkError: IsRunning
Ou seja, não tá encontrando o método nativo.
Sendo que os arquivos, .dll e .h estão no proejto.
Existe alguma configuração diferente que possa ser feita no Eclipse para o mesmo encontrar o arquivo?
Opa, valeu pelas respostas, mas seguinte: Essa dll não precisa estar em nenhuma outra pasta do sistema, pois ela foi feita por mim, e possui o aquivo .h bonitinho.
Volto a comentar, o problema só ocorre em um projeto do Eclipse específico, criando outros workspaces no eclipse ou no NetBeans o problema não ocorre, é algo específico do projeto, Path ou algo assim.
Como eu tinha falado vc precisa ter esse arquivo .h que deve ser gerado pelo compilador no seu projeto e a dll precisa estar no system32, você tentou fazer isso e rodar no Eclipse?
Galera, agora descobri uma coisa muito interessante.
Se a minha classe que está chamando essa dll estiver dentro de um package, algo como. br.com.empresa.dll ela não funciona !!!
Agora, se estiver fora, ou seja, na raiz do projeto como DefaulPackage ela funciona!!
observe o código:
class Monitor {
public native boolean IsRunning();
static {
System.loadLibrary("Monitor");
}
public static void main(String[] args) {
Monitor objeto= new Monitor();
if(objeto.IsRunning())
JOptionPane.showMessageDialog(null,"TRUE");
else
JOptionPane.showMessageDialog(null,"FALSE");
}
}
Observe que essa classe não possui nenhum pacote específico.
Beleza, agora outro problema, caso eu tente usar essa classe em uma outra classe de outro pacote, também não funciona. Eu acho que tem algum conceito de OO, ou algo específico que eu esteja errando, alguma sugestão?