[Resolvido] Utilizando JNI - Erro ao tentar carregar uma DLL

6 respostas
A

Bom dia colegas!

Estou tentando carregar uma DLL, mas não estou conseguindo.

Classe: Tenho minha classe com seus métodos native mapeando uma DLL:

public class ProcJNI {
	
    public static native String GetHeaderToProc();

    public static native boolean isHeaderFromProc(String s);

    static{
    	System.load("C:\\WINDOWS\\system32\\ProcJNI.dll");
    }
    
    public static void main(String... args){

    	System.out.println("Result: ");
    	GetHeaderToByYouProc();
    }
}

Quando compilo ele no Eclipse, é gerada a exception:

Exception in thread "main" java.lang.UnsatisfiedLinkError: ProcJNI.GetHeaderToProc()Ljava/lang/String; at ProcJNI.GetHeaderToProc(Native Method) at ProcJNI.main(ProcJNI.java:15) .

Procurei na documentação por essa e exception e encontrei isso: "Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native." Após ler o conteúdo acima fui compilar pelo console, sendo assim classe é compilada mas não executada, fui utilizar o comando javah e a mensagem abaixo foi exibida:

C:\workspace\Teste\LSTeste\src>javah ProcJNI
error: cannot access ProcJNI
class file for ProcJNI not found
javadoc: error - Class ProcJNI not found.
Error: No classes were specified on the command line.  Try -help.

Alguém pode me dar um dica?

Comecei a mecher com JNI ontem, por isso surgem essas dúvidas malucas.

6 Respostas

U
System.load("C:\\WINDOWS\\system32\\ProcJNI.dll");

cara tenta colocar as barras “\” ao contrárias!
ficando assim “//”

vlw

A

Não rolou, ainda continua lançando:

java.lang.UnsatisfiedLinkErro
U

[quote=allyssonluan]Não rolou, ainda continua lançando:

java.lang.UnsatisfiedLinkErro

Verifica se realmente existe a DLL!
olha aqui:
http://javafree.uol.com.br/topic-2670-JNI-javalangUnsatisfiedLinkError.html

vlw

A

Eu tinha a DLL na pasta System32 do Windows e também em um Jar. Mas fiz um processo que a DLL foi lida de dentro do jar mesmo.

Sendo assim resolvi o meu problema!

Obrigado.

J

allyssonluan:
Eu tinha a DLL na pasta System32 do Windows e também em um Jar. Mas fiz um processo que a DLL foi lida de dentro do jar mesmo.

Sendo assim resolvi o meu problema!

Obrigado.

Posta a solução do problema.

D

E como fez para ler de dentro do JAR

Criado 26 de março de 2010
Ultima resposta 8 de nov. de 2012
Respostas 6
Participantes 4