Estou fazendo mudanças de localização (novos pacotes) de processos já existentes, mas quando vou executar através do eclipse uma da classes que acessam funções NATIVAS em C++ me envia esta exception, isto pode ocorrer por alguma path ou dll no local fisico da pasta ?
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: SMGetScannerCount
at br.com.verifinger.ScanMan.ScanMan.SMGetScannerCount(Native Method)
Esse erro costuma dar quando sua DLL não está no PATH (não no CLASSPATH). Sete o PATH corretamente ou então copie a DLL para o diretório SYSTEM32 (no XP e 2003, normalmente c:\windows\system32; no 2000 e NT, normalmente c:\winnt\system32; e no 98 e ME, normalmente c:\windows\system.)
Fiz as alterações informadas mas infelizmente não resolveu o problema, segue mais algumas informações para que vc me ajudem, a estrutura de package estão divididas em 2 sistemas, circularsantaluzia e verifinger:
br.com.circularsantaluzia.pontoeletronico (aqui dentro as classes que estou denvolvendo) no outro pacote é de terceiro do qual esta br.com.verifinger.VeriFinger (onde tenho a class VeriFingerWrapper.java que encapsula as funções nativas) e br.com.verifinger.library (onde coloquei várias .dll e h que são acessadas pela VeriFingerWrapper.class).
Deste gerei um .jar e estou executando da seguinte forma: java -ss262144 -oss819200 -classpath ponto.jar br.com.circularsantaluzia.pontoeletronico.RegistraBiometriaFuncionario mas ocorre o erro de não encontrar as funções nativasException in thread "main" java.lang.UnsatisfiedLinkError: VFInitialize
at br.com.verifinger.VeriFinger.VeriFingerWrapper.VFInitialize(Native Method)
at br.com.circularsantaluzia.pontoeletronico.RegistraBiometriaFuncionario.initVFinger(RegistraBiometriaFuncionario.java:622)
Por favor, alguém sabe o que estou fazendo de errado ?
Gente…alguém na escuta ! Coloquei o loadLibrary no inicio da classe RegistraDigitalFuncionario e a mesma não deu erro, da a impressão que ela achou sem problemas, agora quando ela chama via a class VeriFingerWrapper ocorre o problema de não achar este método. Como disse anteriormente se coloca-las sem identificação de package ela funciona, isto é, deixar na raiz. Please help -me.
Se você é que gerou a DLL JNI sabe que há diferença entre gerar (com javah ) o código nativo para “br.com.qqcoisa.MinhaClasse” e “MinhaClasse”.
Se está funcionando sem o package, não tem como você mudar o fonte Java para usar o package sem mudar a DLL.
Tingo, sou iniciante em java e por isto tenho muitas dúvidas, mas me diga, eu comprei esta .dll de uma empresa da qual não tenho acesso a regerar estas dll(s) que estão em C++, eles me enviaram uma demo em java de como utilizar tais dll(s), o que fiz foi tentar usar a demo deles integrando com meu desenvolvimento, so que gostaria de colocar esta “demo” dentro de um pacote, cuja demo eu tenho acesso aos .java, mesmo assim eu não conseguirei acessar ?
Pessoal, eu também estou tendo problemas para acessar uma biblioteca no Linux.
Aqui no trabalho tenho uma biblioteca libdisptec55.so que trabalha com display de teclado Gertec e eu preciso acessar os métodos dela em Java. Eu fiz um exemplo em C que utiliza as funções da biblioteca e este deu certo, mas quando eu faço no Java, dá esse erro: Exception in thread “main” java.lang.UnsatisfiedLinkError: TestaTEC.abrirConexao()V
at TestaTEC.abrirConexao(Native Method)
at TestaTEC.main(TestaTEC.java:14)
Aí eu criei um header disptec55.h:
#include <stdio.h>
#include <stdlib.h>
void abrirConexao();
void fecharConexao();
int displayString(char *str);
int displayCaractere(char chr);
int posicionaCursor(int c, int l);
int limpaDisplay();
int limpaLinha(int l);
public class TestaTEC{
public native void abrirConexao();
public native void fecharConexao();
public native int displayString(String str);
public native int displayCaractere(char chr);
public native int posicionaCursor(int c, int l);
public native int limpaDisplay();
public native int limpaLinha(int l);
static{
System.loadLibrary("disptec55");
}
public static void main(String... args){
TestaTEC t = new TestaTEC();
t.abrirConexao();
}
}
O que posso estar fazendo errado? A biblioteca está em /usr/lib e jre/lib/i386