Ola…Bom estou com o seguinte problema eu criei uma classe que carrega um dll.Para usar com a JNI
static{
System.loadLibrary(“minhaDLL”);
}
so que o problema é o seguinte quando gero o .jar para de funcionar a classe e da um monte de excessao é como senao carrega-se mais a dll.eu tentei utiliar o comando getClass().getResourceAsStream(“dll/minhaDll.dll”).Mas nao funciona.Agradeco se alguem poder me ajudar.
JNI dll
2 Respostas
P/ acessar uma dll por java, a dll precisa ser criada de uma forma especial (com uma assinatura). Os nomes das funções da dll devem ter um prefixo java, deve-se colocar o nome de uma classe http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/design.html#wp615 com uma dll assinada pode-se usar o Anywhere PE Viewer p/ ver as assinaturas dos métodos
static{
System.loadLibrary(“NomeDll”);
}
pode usar também getClass().getResourceAsStream(“dll/nomeDll.dll”)
Mais info e exemplo em: Como chamar código nativo (DLL) de Java usando JNI -> http://support.microsoft.com/kb/222092/pt-br e www.linhadecodigo.com.br/artigos_impressao.asp?id_ac=747
Caso seja uma dll de um sistema operacional que ñ foi criada seguindo o padrão, por ex. dll do windows http://java.sun.com/products/accessbridge p/ trabalhar com dll do tipo COM (Component Object Model) existe o Jacob http://danadler.com/jacob http://groups.yahoo.com/group/jacob-project
Existe também a biblioteca Jenie www.servertec.com/products/jenie/jenie.html p/ chamar a dll sem precisar criar o código JNI, é tipo criar uma DLL JNI (própria assinada) p/ acessar uma NON-JNI-DLL (ñ assinada).
Outras opções:
swig -> www.swig.org
JNA -> https://jna.dev.java.net
Uma solução bem segura é: Java -> Minha dll/lib JNI -> dll/lib do S.O./Aplicativo em questão.
Assim se isola as áreas criticas do código, restringindo a dll/lib a apenas o necessário para a aplicação Java.
Se tudo isso ñ servir, existe uma última saída: a comunicação serial
Outros sobre JNI
JNI -> http://java.sun.com/j2se/1.5.0/docs/guide/jni/index.html e www.javafree.org/javabb/viewtopic.jbb?t=13913
Java e DLL -> https://jna.dev.java.net
Bom vou dar uma olhada.Agradeco a atencao.Mas o meu problema nao é carregar a dll isto eu ja consegui, o problema é colocar a dll dentro do .jar e continuar executando ela,fora do jar dentro da mesma pasta do main ela funciona certinho é so gerar o jar com ela dentro q para de funcionar.