JNI dll

2 respostas
D
OlaBom 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.

2 Respostas

L

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

D

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.

Criado 14 de junho de 2007
Ultima resposta 19 de jun. de 2007
Respostas 2
Participantes 2