[Resolvido]Erro ao carregar DLL no java

Ola pessoal!
Estou com um dificuldade, quando tento carregar a dll na minha classe aparece a seguinte mensagem ao rodar o programa:

[color=red]Exception in thread “main” java.lang.UnsatisfiedLinkError: teste2.bematech.Bematech.AberturaDoDia(Ljava/lang/String;Ljava/lang/String;)I
at teste2.bematech.Bematech.AberturaDoDia(Native Method)
at teste2.Main.main(Main.java:19)
Java Result: 1[/color]

O engraçado é que estou fazendo um teste com a dll da bematech a BEMAFI32 q possui uma biblioteca para comunicação. Quando uso a biblioteca ele carrega a dll mas manualmante n! sendo que meu codigo esta identico o da biblioteca! preciso fazer manual porq tenho que utilizar a DP20 de cheque e pra ela nao tem jar.

minha classe esta assim:

[code]public class Bematech {

public Bematech()
{
}

public static native int AlteraSimboloMoeda(String s);

public static native int AbreCupom(String s);

static
{
System.loadLibrary(“BEMAFI32”);
}

}
[/code]

nao coloquei todo o codigo porq sao apenas mais conteudo! se alguem souber me ajudar agradeceria bastante!

obrigado

a dll ja esta em system32!

na documentação da impressora cupom fiscal bematech você encontrarar como ultilizar as dll da mesma, entre no site do fabricante.

[quote=thiagocifani]
[color=red]Exception in thread “main” java.lang.UnsatisfiedLinkError: teste2.bematech.Bematech.AberturaDoDia(Ljava/lang/String;Ljava/lang/String;)I
at teste2.bematech.Bematech.AberturaDoDia(Native Method)
at teste2.Main.main(Main.java:19)
Java Result: 1[/color][/quote]

Acredito que é porque essa biblioteca faz referência a outra biblioteca (.dll). Acredito que tem uma outra dll aí junto com os arquivos que vc baixou, se não me engano é USBX_alguma_coisa.dll. Minha máquina aqui tá no conserto, quando ela chegar te falarei com melhor precisão qual é a biblioteca.

Eu tive esse problema também, aí só adicionei essa outra biblioteca (.dll) e parou de dar o erro.

Pelo jeito vc também está usando JNI, uma dica : Utiliza o JNA. É bem mais fácil de implementar.

Qual é a impressora que vc está utilizando?

cara, na verdade preciso implementar para a MP20 que eh uma impressora de cheque, mas ai to testando o acesso primeiro na que funciona que é a fI! vc poderia me ajudar a implementar um acesso a mp20?

abraço

Bem resolvi! segui o conselho do amigo acima e usei jna!
o codigo ficou assim:

[code]import com.sun.jna.win32.StdCallLibrary;

public interface Bematech extends StdCallLibrary {
int Bematech_DP_IniciaPorta(String porta);
int Bematech_DP_ImprimeCheque(String banco,String valor, String favorecido, String cidade, String data, String Mensagem);
}[/code]

public static void main(String args[]) { int iRetorno; Bematech lib = (Bematech) Native.loadLibrary("BEMADP32", Bematech.class); iRetorno = lib.Bematech_DP_IniciaPorta("COM1"); iRetorno = lib.Bematech_DP_ImprimeCheque("001", "150,00", "José da Silva", "Curitiba", "15102003", ""); System.out.println(iRetorno); }

Valeu a ajuda pessoal! :wink:

Lembrando que o JNA carrega a DLL em 2 diretórios padrão, o System32 e o diretório do seu projeto! É preferível utilizar a segunda opção, assim vc nem precisa ficar indo no cliente copiar as DLL’s para a pasta do WINDOWS!

Quando for compilar seu projeto coloque as DLL’s na mesma pasta onde ficará o seu .jar!

T+