UnsatisfiedLinkError

2 respostas
D

Boa noite a todos, pessoal, já li alguns tópicos a respeito de jna inclusive e, https://jna.dev.java.net porém sempre recebo o mesmo erro:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'mp2032': Não foi possível encontrar o módulo especificado.

        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:114)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:157)
        at com.sun.jna.Library$Handler.<init>(Library.java:123)
        at com.sun.jna.Native.loadLibrary(Native.java:260)
        at com.sun.jna.Native.loadLibrary(Native.java:246)

O código está aqui:

import com.sun.jna.Native;
import java.io.File;

public class Bematech {
    
    /** Creates a new instance of Bematech */
    public Bematech() {
    }
    
    public static void main(String args[]) {
        File f = new File("/"); // coloquei o arquivo mp2032.dll na raiz de c para simplificar este exemplo
        System.setProperty("jna.library.path",f.getAbsolutePath()) ;
        //System.out.println(System.getProperty("jna.library.path"));
        LibBematchMP20 exec =  (LibBematchMP20) Native.loadLibrary("mp2032", LibBematchMP20.class);
        
        System.out.println("Abrindo porta" + exec.IniciaPorta("LPT1"));
        System.out.println("Tentando imprimir" + exec.BematechTX("VAI FUNCIONAR !!!"));
        System.out.println("FECHANDO porta" + exec.FechaPorta());
        
    }

import com.sun.jna.Library;

public interface LibBematchMP20 extends Library {
    int AcionaGuilhotina(int val);
    int AjustaLarguraPapel(int val);
    int AutenticaDoc(String txt, int val);
    int BematechTX(String txt);
    int ComandoTX(String cmdo, int tamanhoCmdo);
    int IniciaPorta(String nomePorta);
    int ConfiguraCodigoBarras(int altura, int largura, int posicaoCaracteres, int fonte, int margem);
    int FechaPorta(); 
    int FormataTX( String txt, int TipoLetra,int Itálico,int Sublinhado,int Expandido,int Enfatizado) ;
}

Alguém saberia o que está errado ?

2 Respostas

I

Bom dia amigo.

Estou passando pelo mesmo problema (inclusive existe um tópico meu que fiz ontem, mas até agora não tive êxito no problema).

Estou precisando acessar alguns métodos da dll aqui da empresa que é feita em delphi. Mas estou com problemas no recebimento e passagem de parâmetros que não são de tipos primitivos entende?

Andei lendo sobre este erro (“UnsatisfiedLinkError”) na documentação da JNA e vi que um dos possíveis motivos é justamente sobre a passagem de parâmetros para a dll. Estou caindo na documentação para ver a maneira correta de passar estes parâmetros. Até agora o que encontrei que achei mais relevante foi:

Class NativeMappedConverter
All Implemented Interfaces:
FromNativeConverter, ToNativeConverter, TypeConverter

[i]Constructor Summary
NativeMappedConverter(Class type)

Method Summary
NativeMapped defaultValue()

Object fromNative(Object nativeValue, FromNativeContext context)
Convert the given native object into its Java representation using the given context.
static NativeMappedConverter getInstance(Class cls)

Class nativeType()
Indicate the native type used by this converter.
Object toNative(Object value, ToNativeContext context)
Convert a Java type to an appropriate native type. [/i]

Esta classe (pelo que entendi) faz o trabalho de converter parâmetros nativos para java e de java para nativo. Creio que seja por ai o caminho (mas, nem sempre estamos certos). Só estou com problema em como usar ela. Não tenho muito experiência ainda. Gostaria de encontrar algum exemplo do uso ou mesmo alguém mais experiente que pudesse dar uma luz.

Se quiser, podemos buscar juntos a resolução deste problema. Só deixe o msn aqui.

Bom, esta é por enquanto a ajuda que posso dar. Qquer coisa que eu descobrir de nova posto aqui.

[aB[R]Aç[[o]]s]

[[|]] 'Até

N

Esse lance é o seguinte. Instala a dll, a lib e o usb depois de botar o bematech class. Ficou blz aqui !

Abraço

Criado 27 de março de 2008
Ultima resposta 16 de mai. de 2008
Respostas 2
Participantes 3