Ir al contenido principal

Programación de un lector de huella digital en Java. Parte 2.

Continuando con la programación de un lector de huella digital en Java procederemos en este caso ya directamente con el código, la entrega anterior se refirió meramente a la preparación del entorno para el desarrollo, si no la has leído te recomiendo verificarla, entenderla y realizarla primero antes de proceder con esto ya que de lo contrario no funcionará la aplicación.

Comenzando con las indicaciones, haremos lo siguiente:

1. Creamos un proyecto en NetBeans con el nombre EjemploLectorHuellas.

2. Dentro del proyecto crear un paquete de nombre procedimientos y otro de nombre interfaz.

3. Dentro de procedimientos crear una clase (Java Class) llamada Util.

4. En la definición de la clase util agregar implements IStatusEventListener, IImageEventListener, IFingerEventListener y sus correspondientes imports...

import com.griaule.grfingerjava.FingerprintImage;
import com.griaule.grfingerjava.IFingerEventListener;
import com.griaule.grfingerjava.IImageEventListener;
import com.griaule.grfingerjava.IStatusEventListener;

public class Util implements IStatusEventListener, IImageEventListener, IFingerEventListener{
.
.


5. Al implementar dichas interfaces nos pedirán implementar todos sus métodos abstractos, lo hacemos dando un clic en el foco que aparece del lado izquierdo y seleccionando "Implement all abstract methods" lo cual generará la implementación de 5 métodos (modifica el nombre de los argumentos para mejor referencia) :



public void onSensorPlug(String idSensor) // evento que se genera al conectar el lector de huella

public void onSensorUnplug(String idSensor) // evento que se genera al desconectar el lector de huella

public void onImageAcquired(String idSensor, FingerprintImage huellaDigital) // evento que se genera al obtener una imagen de la huella

public void onFingerDown(String idSensor) // evento que se genera al colocar un dedo en el lector

public void onFingerUp(String idSensor)   // evento que se genera al levantar el dedo del lector


Cabe mencionar que no utilizaremos todos los eventos en este ejemplo pero se deben de implementar para que el compilador no marque errores ya que provienen de una interface.

6. Modificamos los métodos onSensorPlug y onSensorUnplug para que queden de la siguiente manera:

   public void onSensorPlug(String idSensor) {
       try {
           GrFingerJava.startCapture(idSensor, this, this);
       } catch (GrFingerJavaException e) {
           e.printStackTrace();
       }
   }

   public void onSensorUnplug(String idSensor) {
       try {
           GrFingerJava.stopCapture(idSensor);
       } catch (GrFingerJavaException e) {
           e.printStackTrace();
       }
   }
 
Lo anterior es para evitar problemas en la captura al momento de conectar y desconectar el lector, para que el compilador no marque errores debemos importar las clases GrFingerJava y GrFingerJavaException...

import com.griaule.grfingerjava.GrFingerJava;
import com.griaule.grfingerjava.GrFingerJavaException;

Los demás métodos que se implementaron deben de quedar vacíos (por el momento).

7. Ahora creamos un método estático que nos permita establecer el directorio de las librerías del SDK

   /**
    * Establece el directorio donde se ubican las librerías nativas del SDK
    */
   public static void setFingerprintSDKNativeDirectory(String directorio) {
       File directory = new File(directorio);
      
       try {
           GrFingerJava.setNativeLibrariesDirectory(directory);
           GrFingerJava.setLicenseDirectory(directory);
       } catch (GrFingerJavaException e) {
           e.printStackTrace();
       }
   }

y el import de la clase File correspondiente:

import java.io.File;

8. Posteriormente agregamos los siguientes objetos y variables inmediatamente después de la definición de la clase:

   /**Contexto utilizado para la captura, extracción y coincidencia de huellas digitales */
   private MatchingContext fingerprintSDK;

   /**Interfaz de usuario donde se muestra la imagen de la huella*/
   private PantallaPrincipal ui;

   /** Indica si la plantilla o template debe ser extraída automáticamente*/
   private boolean autoExtract = true;

   /** Contiene localmente los datos de la huella capturada */
   private ByteArrayInputStream fingerprintData;
  
   /**Contiene la longitud del dato de la huella*/
   private int fingerprintDataLength;
  
   /** La imagen de la última huella digital capturada. */
   private FingerprintImage fingerprint;
  
   /** La plantilla de la última imagen de huella capturada */
   public Template template;
  
... con sus correspondientes imports ...

import com.griaule.grfingerjava.MatchingContext;
import interfaz.PantallaPrincipal;
import java.io.ByteArrayInputStream;

Nota: se debe agregar 'import interfaz.PantallaPrincipal;' aún cuando no existe actualmente ya que se creará en los pasos siguientes.

9. Ahora crearemos la interfaz de usuario, para ello damos clic derecho en el paquete interfaz y seleccionamos New -> JFrame Form, le damos por nombre 'PantallaPrincipal'.

10. Agregamos dos paneles (Huella Digital y Acciones, como se muestra en la imagen) y 4 botones (Verificar, Identificar, Guardar y Salir) de manera que queden parecido a lo siguiente:



11. Nombramos los botones tal cual su etiqueta pero anteponiendo las letras btn, es decir btnVerificar, btnIdentificar y así sucesivamente, el panel de Huella Digital lo nombramos 'panelContenedor'.

12. Establecemos el panelContenedor con un BorderLayout dando un clic derecho sobre él -> Set Layout -> Border Layout



12. Ya que tenemos lo anterior nos vamos a la vista de código y agregamos los siguientes objetos...

    //objeto usado para realizar todas las operaciones relacionadas al Fingerprint-SDK
   private Util procedimientosSDK;

   //Panel para mostrar la huella digital
   private JPanel fingerprintViewPanel = null;
  
   //Imagen de la huella actual
   private BufferedImage fingerprintImage = null;

... con sus correspondientes imports ...

import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import procedimientos.Util;
  
... los objetos deben ir dentro de la clase pero fuera de cualquier método.

13. Nuevamente modificamos la clase Util agregando un constructor sobrecargado que reciba un objeto de tipo PantallaPrincipal de la siguiente manera:

   public Util(PantallaPrincipal ui) {
       this.ui = ui;     
   }
  
14. Por último en la clase Util (por el momento) agregamos un método que nos permita inicializar la captura de las huellas, deberá de quedar así:

   /**
    * Inicializa el Fingerprint SDK y habilita la captura de huellas.
    */
   public void inicializarCaptura() {
       try {
           fingerprintSDK = new MatchingContext();         
           //Inicializa la captura de huella digital.
           GrFingerJava.initializeCapture(this);        
       } catch (Exception e) {
           //Si ocurre un error se cierra la aplicación.
           e.printStackTrace();
           System.exit(1);
       }
   }
  
15. Ahora trabajaremos con la clase PantallaPrincipal, lo que haremos es crear un método para inicializar la forma, estableciendo el estilo visual y creando una instancia de la clase Util. Deberá quedar de la siguiente manera:

     /**
      * Se establece el estilo visual de la aplicación y se realiza la inicialización de la clase
      * que contiene los procedimientos principales.
      **/  
    public void  inicializar() {
      
       try {
           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
       } catch (Exception e) {
            System.err.println("No se pudo aplicar el estilo visual");
       }
      
       //Crea una instancia de Util
       this.procedimientosSDK = new Util(this);      
   }
  
... y su import correspondiente:

import javax.swing.UIManager;
  
16. Agregamos una llamada al método inicializar() dentro del constructor de la clase y antes del método initComponents() de tal manera que quede así:

    /* Crea una nueva forma de  PantallaPrincipal */
    public PantallaPrincipal() {
        inicializar();
        initComponents();
    }


17. Ahora hacemos un método para crear el contenedor de la imagen de la huella digital, en los comentarios se va explicando las funciones de cada línea...

    /**
    * Crea el panel que contendrá la imagen de la huella digital
    */
   private JComponent crearPanelHuella() {
       //Crea un panel nuevo para mostrar la huella
       fingerprintViewPanel = new JPanel(){
          
           //Se sobreescribe el método paintComponent
           //para habilitar la muestra de la imagen de la huella

           public void paintComponent(Graphics g) {
               super.paintComponent(g);

               //Si hay una imagen para ser mostrada
               if (fingerprintImage!=null) {
                   //Calcula el tamaño y posición de la imagen para ser pintada
                   //el tamaño es ajustado para que ocupe todo el tamaño del panel
                   Insets insets = getInsets();
                   int transX = insets.left;
                   int transY = insets.top;
                   int width  = getWidth()  - getInsets().right  - getInsets().left;
                   int height = getHeight() - getInsets().bottom - getInsets().top;

                   //Se dibuja la imagen
                   g.drawImage(fingerprintImage, transX, transY, width, height, null);
               }

           }

       };

       //Se agrega un borde alrededor del panel
       fingerprintViewPanel.setBorder(new CompoundBorder (
               new EmptyBorder (2,2,2,2),
               new BevelBorder(BevelBorder.LOWERED)));          
      
       //si no hay existe el panel de la huella no devuelve nada...
       if(fingerprintViewPanel==null)
       {       
            return null;
       }else{ // de lo contrario devuelve el panel mismo
      
            return fingerprintViewPanel;
       }
      
   }
  
... y se agregan los imports correspondientes para evitar errores ...

import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.JComponent;
import javax.swing.border.BevelBorder;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;

18. Una vez hecho esto nos vamos a la vista de diseño de la clase PantallaPrincipal, sin seleccionar ningún elemento damos clic derecho sobre el JFrame y posteriormente seleccionamos Events -> Window -> WindowActivated ...



... lo cual nos llevará a la vista de código de la clase, dentro del método formWindowActivated, ahí agregamos el código de manera que quede de la siguiente forma:

private void formWindowActivated(java.awt.event.WindowEvent evt) {
    this.panelContenedor.add(crearPanelHuella());
}

19. Ahora creamos el método showImage que nos permitirá mostrar la imagen capturada por el lector en el panel correspondiente. El método debe quedar de la siguiente manera:

    /**
     * Método utilizado para mostrar la imagen de la huella
     * en el panel correspondiente.
     */
   public void showImage(BufferedImage image) {
       //Utiliza el imageProducer para crear una imagen de la huella digital
       fingerprintImage = image;
       //Se dibuja la nueva imagen
       repaint();       
   }
  
20. Una vez hecho esto vamos a la clase Util y agregamos el código correspondiente al método onImageAcquired que se ha creado al implementar las interfaces, el método debe quedar así:

   /**
    * Este método es llamado cada vez que la imagen de una huella ha sido capturada.   
    */
   public void onImageAcquired(String idSensor, FingerprintImage huellaDigital) {
       //Almacena la imagen de la huella
       this.fingerprint=huellaDigital;

       //Muestra la imagen obtenida
       ui.showImage(huellaDigital); 

   }
  
21. Ahora en el constructor de la clase PantallaPrincipal agregamos las siguientes 3 líneas:

            /*Inicializa la captura de huellas*/
        procedimientosSDK.inicializarCaptura();
       
        /*centra la ventana en la pantalla*/
        setLocationRelativeTo(null);
       
        /*hace visible la ventana*/
        setVisible(true);
       
22. Agregamos el evento ActionPerformed del botón 'Salir' dando clic derecho sobre él en vista de diseño y seleccionando Events -> Action -> ActionPerformed y dentro del código generado agregamos el método dispose();

23. Para que nuestro programa pueda ejecutarse necesitamos mandarlo llamar desde la clase main, en este caso además de llamar a la ventana se necesita establecer el directorio de las librerías, en conjunto, el método main de la clase main debe quedar así:

    public static void main(String[] args) {
            String grFingerNativeDirectory = new File(".").getAbsolutePath();
            Util.setFingerprintSDKNativeDirectory(grFingerNativeDirectory);

            PantallaPrincipal p = new PantallaPrincipal();
    }
   
Una vez hecho esto podemos correr la aplicación con F6 y verificar que realmente funcione, si has realizado los pasos tal cual podrás, hasta este momento, activar el lector de huellas y obtener la lectura de la huella que se ha colocado en el lector, aún nos falta especificar cómo verificar, identificar y guardar las huellas pero eso lo dejaremos para la próxima entrega.

¿Alguna duda o algo qué decir? Deja tu comentario.

****Actualización (08/08/2012)****
A petición de todos les dejo la lista de todos los artículos de este tutorial.

Comentarios

  1. que onda, me sale un error al correrlo:

    Exception in thread "Thread-3" java.lang.UnsupportedOperationException: Not supported yet.at procedimientos.Util.onFingerDown(Util.java:94)


    y el otro:


    Exception in thread "Thread-5" java.lang.UnsupportedOperationException: Not supported yet.
    at procedimientos.Util.onFingerUp(Util.java:98)



    Que onda, alguien me puede ayudar

    ResponderBorrar
  2. Este error aparece por que no se está utilizando correctamente alguna clase, checa que estés implementado todos los métodos de las interfaces que estás utilizando en la clase, si lo deseas publica un poco más de código del que tienes para poder ayudarte. Saludox.

    ResponderBorrar
  3. Que onda, it's me again:

    Ya lo solucione, lo que pasaba era que estaba mal nombrada mi panelcontenedor, pero ya se soluciono, que onda pa cuando le seguimos con el tuto ;) (Y) ?

    ResponderBorrar
  4. Hola soy Andres Guerrero: me gustaría saber si hay un tutorial como este pero incluyendo la libreria de Griaule en un applet.

    Muchas gracias.

    ResponderBorrar
  5. Qué tal Charly,

    Espero en esta semana tener lista la tercera entrega del tutorial, de cualquier manera permanece al pendiente.

    Andrés,

    Te comento que este ejemplo está enfocado a una aplicación de escritorio pero es exactamente lo mismo en un applet, sólo que en lugar de un JFrame utilizas un Java Applet, con los mismos elementos y clases.

    Saludox.

    ResponderBorrar
  6. Es todo, esperamos que salga para esta semana (h) !!

    ResponderBorrar
  7. Que onda alguno de ustedes sabe como guardar la imagen en la base de datos. y una vez que esten guardadas varias huellas en la misma Base de datos, cuando alguien vuelva a poner su huella detectarlo y mostrar quien es el que puso la huella ???

    ResponderBorrar
  8. Jorge Luis
    Hola como estan, oye ya he corrido el ejemplo siguiendo todos los pasos que aqui comentas, pero me manda un error en un archivo xml, es el siguiente:

    C:\Documents and Settings\JORGE LUIS\Mis documentos\NetBeansProjects\EjemploLectorHuellas\nbproject\build-impl.xml:51: Source resource does not exist: C:\Archivos de programa\Java\jdk1.6.0_07\lib\nblibraries.properties
    BUILD FAILED (total time: 0 seconds)

    y hasta donde yo se ya todo esta bien...
    Alguien me puede ayudar con este problemilla...
    mi correo es jorge_luis38@hotmail.com

    ResponderBorrar
  9. Saludos, realmente han sido como caidos del cielo...por qué? estamos en una aplicacion en PHP5/Mysql en donde necesitamos registrar y usar la Huella de algo asi como 500 estudiantes, para checar llegadas, prestamos de biblioteca...el asunto es, quien tiene compilado esto, y funcionando? lo agradeceria sobremanera, porque con Java no nos entendemos, y estoy realmente necesitado...Se agradece toda la ayuda posible...

    ResponderBorrar
  10. Jorge Luis:

    Antes que nada disculpa la tardanza para contestarte, posteriormente te comento que el error que mencionas está relacionado directamente con el jdk de java, puede ser que haya habido un problema en el mismo o se haya corrompido un archivo, te sugiero reinstalarlo y configurarlo con netbeans para tratar de resolverlo.

    Anónimo:

    Te comento que este tutorial es, como su nombre lo comenta, para programación en Java, PHP no se tocará por el momento.

    Saludox.

    ResponderBorrar
  11. Hola, muy interesante el tutorial. Tengo un lector Nitgen usb HFDU04. Mi pregunta es ¿funciona tu codigo para este lector?

    Bueno, otro punto es que ya empece a realizar tu ejercicio, solo q en el apartado 2 me marca un error en el constructor de PantallaPrincipal, esta es la linea procedimientosSDK.inicializarCaptura();

    Esto me arroja el compiler:


    run:
    com.griaule.grfingerjava.GrFingerJavaException: Invalid license
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:60)
    at com.griaule.grfingerjava.MatchingContext.init(MatchingContext.java:103)
    at procedimientos.Utils.inicializarCaptura(Utils.java:85)
    at interfaz.PantallaPrincipal.init(PantallaPrincipal.java:29)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:215)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 3 seconds)

    No he querido pasar de ahi.. ya q como lo indicas en el apartado 3 primero debo obtener la huella.

    Gracias y espero tu respuesta. Saludos.

    ResponderBorrar
  12. hola buenas tardes alguien me puede ayudar me sale estos errores:


    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\procedimientos\Util.java:95: cannot find symbol
    symbol : class Template
    location: class procedimientos.Util
    public Template template;
    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\ejemplolectorhuellas\Main.java:18: cannot find symbol
    symbol : class File
    location: class ejemplolectorhuellas.Main
    String grFingerNativeDirectory = new File(".").getAbsolutePath();
    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\ejemplolectorhuellas\Main.java:19: cannot find symbol
    symbol : variable Util
    location: class ejemplolectorhuellas.Main
    Util.setFingerprintSDKNativeDirectory(grFingerNativeDirectory);
    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\ejemplolectorhuellas\Main.java:21: cannot find symbol
    symbol : class PantallaPrincipal
    location: class ejemplolectorhuellas.Main
    PantallaPrincipal p = new PantallaPrincipal();
    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\ejemplolectorhuellas\Main.java:21: cannot find symbol
    symbol : class PantallaPrincipal
    location: class ejemplolectorhuellas.Main
    PantallaPrincipal p = new PantallaPrincipal();
    C:\Documents and Settings\Roberto\Mis documentos\NetBeansProjects\EjemploLectorHuellas\src\interfaz\PantallaPrincipal.java:134: cannot find symbol
    symbol : variable panelContenedor
    location: class interfaz.PantallaPrincipal
    this.panelContenedor.add(crearPanelHuella());
    6 errors
    BUILD FAILED (total time: 0 seconds)

    ResponderBorrar
  13. hola que tal

    esta muy bueno el articulo, nada mas que no puedo correr el programita, mira me salen estos errores

    Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
    at ejemplolectorhuellas.Main.main(Main.java:15)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

    todo va muy bien, hasta cuando le pongo las cosas en la clase MAIN

    no podras pasarme el software ya compilado?

    o ayudarme con esta falla??

    muchas gracias

    igual y te paso mi correo

    rikardo.lara@gmail.com

    ResponderBorrar
  14. Cual dispositivo se recomienda para usar con este codigo? Como consigo el SDK?

    ResponderBorrar
  15. Hola Monillo007, ya tengo lo que necesitaba del proyecto, es decir, integrar el Nitgen Hamster II en Java y guardar en disco como .jpg la imagen de la huella leída, todo funciona sin problemas. El único inconveniente es que tras la primera vez que corro la aplicación, el lector deje de funcionar, y hay que desconectarlo y volverlo a conectar. He visto en los comentarios publicados en debugmodeon para esta segunda parte que también le pasa por lo menos a otra persona (con nick ppbno), pero no veo que comente solución alguna, si ha llegado a tenerla; sí dice algo de que le dijiste que hiciera algo en init() o algo así, pero que no lo entendía bien y seguía con el mismo problema. Por favor, ¿podrías ayudarme? Muchas gracias por adelantado.

    ResponderBorrar
  16. Hola Monillo007, y hola a todos,
    respecto a la pregunta que he planteado antes sobre el problema de tener que desconectar y volver a conectar el lector cada vez que se vaya a ejecutar la aplicación, después de buscar por los foros de la web de Griaule, ví un comentario que me puso sobre la pista de cuál podía ser la solución para mi caso (Nitgen Hamster II), que utiliza el driver del fabricante (porque el FingerCap no me lo reconoce). He visto que decían que para solucionarlo habría que llamar a la función 'CapStopCapture()' o algo así, pero claro, se deduce que eso será si para tu lector vale el FingerCap, supongo.
    En mi caso, lo que he hecho ha sido crear en la clase procedimientos.Util un nuevo método, tal que así:
    public void finalizarCaptura(){
    try{
    GrFingerJava.finalizeCapture();
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    y luego en la clase PantallaPrincipal lo llamo en el actionperformed del botón salir, tal que así:
    private void btnSalirAPerformed(ActionEvent evt){
    procedimientosSDK.finalizarCaptura();
    dispose();
    }
    Y con esto lo acabo de probar varias veces y me perfecto, ya no tengo que desconectar y volver a conectar el lector cada vez que voy a correr la aplicación.
    Espero que os sirva de ayuda.
    Saludos.

    ResponderBorrar
  17. Hola, recien encontre el tutorial y tiene exactamente lo que necesito, realice todos los pasos de la primera y segunda parte y al ejecutar me muestra los siguientes errores:

    Exception in thread "Thread-3" java.lang.UnsupportedOperationException: Not supported yet.
    at procedimientos.Util.onFingerDown(Util.java:80)
    at com.griaule.grfingerjava.GrFingerJavaNative.callbackFinger(GrFingerJavaNative.java:168)
    Exception in thread "Thread-5" java.lang.UnsupportedOperationException: Not supported yet.
    at procedimientos.Util.onFingerUp(Util.java:84)
    at com.griaule.grfingerjava.GrFingerJavaNative.callbackFinger(GrFingerJavaNative.java:171)

    Revisando el comentario de Charly que tuvo el mismo problema, revise todos los controles y si tienen correcto el nombre. Los metodos abstractos me quedaron asi
    public void onSensorPlug(String idSensor) {
    try {
    GrFingerJava.startCapture(idSensor, this, this);
    } catch (GrFingerJavaException e) {
    e.printStackTrace();
    }

    }

    public void onSensorUnplug(String idSensor) {
    try {
    GrFingerJava.stopCapture(idSensor);
    } catch (GrFingerJavaException e) {
    e.printStackTrace();
    }

    }

    public void onImageAcquired(String idSensor, FingerprintImage huellaDigital) {
    //Almacena la imagen de la huella
    this.fingerprint=huellaDigital;

    //Muestra la imagen obtenida
    ui.showImage(huellaDigital);

    }

    public void onFingerDown(String idSensor) {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public void onFingerUp(String idSensor) {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    Si elimino la linea throw new UnsupportedOperationException("Not supported yet."); de los metodos onFingerDown y onFingerUp al ejecutar cuando coloco el dedo en el lector no hace nada.

    Espero puedan ayudarme, gracias y saludos!!!!

    ResponderBorrar
  18. Buen día Anónimo,

    Lo que sucede es que dentro de los métodos onFingerDown() y onFingerUp() debes de implementar el comportamiento que requiera tu aplicación, por ello te manda una excepción de que no está implementado aún, incluso puedes no hacer nada dentro de ellos y omitir la defición de la excepción (que actualmente solo se usa como recordatorio de que no has definido un comportamiento para dichos métodos).

    Espero haberte ayudado. Saludox.

    ResponderBorrar
  19. Hola Monillo, muchas gracias por tu respuesta, intente dejar esos metodos vacios, como dice el documento del tutorial, pero si comento o quito lo que hay ahi dentro al poner el dedo sobre el lector de huella no hace nada. Si esos metodos estan vacios deberia continuar la ejecucion, cierto?

    Gracias y saludos!!!!

    ResponderBorrar
  20. Depende de la estructura de tu código, te recomiendo que termines con las 5 partes del tutorial siguiendolas tal cual las describo, poco a poco se va agregando el comportamiento a la aplicación, puede ser que te esté faltando algo por que aún no llegas a esa parte.

    Saludox.

    ResponderBorrar
  21. hola que tal monillo007 me sale el siguiente problema
    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error

    estube buscando como solucionarlo pero no lo he podido resolver, segui al pie de la letra la primer parte de tu tutorial pero aqui ya no me deja y no se cual es la licenia del sdk ni cual es el directorio correcto, espero me puedas ayudar como nota dicional ocupo Fingerprint SDK Java 2009 en un proyecto en netbeans

    ResponderBorrar
  22. Que tal todo me funciona muy bien eceptuando a la hora de poner el dedo no hace nada ya verifique los comentarios anteriores se que en el metodo

    public void onFingerDown(String idSensor) {
    throw new UnsupportedOperationException("Not supported yet.");
    }
    es donde debe de ir lo que kieras que haga tu aplicacion cuando detecta el dedo, pero como le haces para q aparesca la imagen, ya verifique el nombre de panelContenedor y esta OK, muchisimas gracias por la informacion que aportas

    ResponderBorrar
  23. Lo que sucede es que dentro de los métodos onFingerDown() y onFingerUp() debes de implementar el comportamiento que requiera tu aplicación, por ello te manda una excepción de que no está implementado aún, incluso puedes no hacer nada dentro de ellos y omitir la defición de la excepción (que actualmente solo se usa como recordatorio de que no has definido un comportamiento para dichos métodos).

    Te recomiendo que termines con las 5 partes del tutorial siguiendolas tal cual las describo, poco a poco se va agregando el comportamiento a la aplicación, puede ser que te esté faltando algo por que aún no llegas a esa parte.

    Saludox.

    ResponderBorrar
  24. Hola, cordial saludo.

    Felicidades y gracias por este manual bien explicado. mi pregunta es la siguente: esta libreria soporta lector zk-7000 de la empreza zksoftware y el OA99 de la empresa Anviz. es que trabaje la primera parte de manual y no me reconnoce ninguno de los 2. o me podrias dar un listado de la marcas y y modelo de los que soporta?. te agradecia me ayudes con esta situacion.

    ResponderBorrar
  25. necesito tu ayuda urgente....resulta que cuando coloco el codigo en la definicion de la clase...

    import com.griaule.grfingerjava.FingerprintImage;
    import com.griaule.grfingerjava.IFingerEventListener;
    import com.griaule.grfingerjava.IImageEventListener;
    import com.griaule.grfingerjava.IStatusEventListener;


    no encuantra el grfingerjava......solo esta en el grfinger....pero este no tiene todas las funciones que estan en el los import

    ResponderBorrar
  26. por que razon me salen estos errores

    at rocedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:88)
    at ejemplolectorhuellas.Main.main(Main.java:32)

    ResponderBorrar
  27. Hola a todos, alguno de ustedes sabe en donde encuentro codigo y documentación de esta aplicación pero para implementarla con PHP, ante todo gracias por la atención. Exitos.
    Email:ferpor7@hotmail.com

    ResponderBorrar
  28. Hola,
    Terminando la parte 2, cuando lo corro, obtengo este error. A alguien le paso? Como lo arreglo? Gracias!

    Exception in thread "main" java.lang.UnsatisfiedLinkError: com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder([B)I
    at com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder(Native Method)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:114)
    at cenit.Main.main(Main.java:16)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 2 seconds)

    ResponderBorrar
  29. Ferpor, Hola a todos, estoy intenta correr el programa pero no se enciende el lector para la captura de la huella, lo estoy haciendo con uno de marca Anviz OA99, que puede ser, Monillo te agradeceria si me puedes ayudar o si alguno se le a presentado el mismo problema como pudo solucionarlo, Gracias buen día. Ferpor7@hotmail.com

    ResponderBorrar
  30. He seguido al pie de la letra este tutorial, el problema es que no obtengo imagen de mi lector en el panelContenedor, no obtengo tampoco ningun error y el lector funciona perfectamente probado con el ejemplo de la aplicacion de Griaule.
    La aplicacion en java también lo registra como Upek1 pero no logro obtener la imagen escaneada.

    ResponderBorrar
  31. Anahi,

    Te recomiendo verificar que en el panel donde se muestra la huella esté definido con un border layout tal cual se muestra en el tutorial.

    ResponderBorrar
  32. Hola me muestra un mensaje de error :
    "No se pudo aplicar el estilo visual"
    sera que me puedas ayudar?
    Saludos.

    ResponderBorrar
  33. Estoy intentando hacerlo en aplicacion applet pero ni asi funciona me arroja ese error. Tendras alguna idea? o consejo...
    La estructura es la siguiente:
    public void inicializar()
    {
    try
    {//inicialice esta acccion por motivo de
    //de que necesitaba iniciarlo porque no tiene
    //el evento de windows
    this.PanelContenedor.add(crearPanelHuella());
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    String grFingerNativeDirectory = new File("C:\\Archivos de programa\\Griaule\\Fingerprint SDK 2009\\bin").getAbsolutePath();
    Util.setFingerprintSDKNativeDirectory(grFingerNativeDirectory);
    }
    catch (Exception e)
    {
    System.err.println("No se pudo aplicar el estilo visual");
    }
    //Crea una instancia de Util
    this.procedimientosSDK = new Util(this);
    }

    Tengo el proyecto si quieres te lo paso y me comentas:
    http://cid-b35d2891a5b9fdff.office.live.com/self.aspx/P%c3%bablico/Programacion/BioMetrico1.zip

    ResponderBorrar
  34. Qué tal,

    Te comento que el error que aparece se debe a la línea 'UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());', por alguna razón la jvm no encuentra el estilo, dicha línea se la puedes quitar, solo el aspecto cambiará un poco pero el funcionamiento será el mismo.

    Espero haberte ayudado. Saludos.

    ResponderBorrar
  35. Gracias tienes razon... Ahora no me marca ningun error pero no me detecta el dispositivo. Instale el SDK 2009 y use el jar que trae "grfingerjava.jar" para usar las librerias que necesita, inicialice las librerias en el metodo Inicializar() y nada aun pienso que es algo de la creacion del panel del metodo CrearPanelHuella()? crees que sea el tipo de aplicacion porque intento en hacerlo en un applet? o que crees?

    ResponderBorrar
  36. Disculpa encontre el error ya lo detecta. Muchas gracias es bueno por cierto por aquellos que no pueden usar el SDK hay una aplicacion manager que les ayudara aplicar la licencia de treinta dias. Chequen en la pagina del producto.

    ResponderBorrar
  37. muy buenas tardes a todos.. exelente post y de gran utilidad.. en este momento estoy aplicando el caso 2.. logre integrarlo al netbeam.. pero al correrlo me da el siguiente error:

    com.griaule.grfingerjava.GrFingerJavaException: Invalid license
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:74)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:22)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:174)

    espero que me puedan ayudar se los agradeceria mucho...!!

    ResponderBorrar
  38. hola Monillo007,soy ariel tola actualmente estoy desarrollando un proyecto con tu ejemplo, me gustaria saber si todavia usas este blog por favor respondeme algo para saber si seguis vivo o algo a mi correo arieltolaz@hotmail.com o arieltolaz@gmail.com ok plz, te lo agradeceria mucho, tengo dudas que luego te comentare ok

    ResponderBorrar
  39. megustari saber si ya salio la tercera parte de este tutirial. y si este codigo funciona con cual quierle lector de huellas

    ResponderBorrar
  40. hola que tal, muy bueno el aporte, pero aun asi tengo una duda, se supone que ya no tienen errores mi codigo, de coincidencia etc, pero a la hora de compilar me sale el siguiente error:
    Exception in thread "main" java.lang.IllegalArgumentException: C:\Documents and Settings\HP_Propietario\Mis documentos\NetBeansProjects\EjemploLectorHuellas\: is not a directory.
    at com.griaule.grfingerjava.GrFingerJava.setNativeLibrariesDirectory(GrFingerJava.java:71)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:61)
    at ejemplolectorhuellas.Main.main(Main.java:25)
    Java Result: 1
    GENERACIÓN CORRECTA (total time: 1 second)

    me podrias ayudar a resolverlo

    ResponderBorrar
  41. bunas tardes Monillo007, he hecho todo lo del tutorial, que por cierto esta muy bueno y muy instructivo. Todo lo he hecho hasta esta parte luego Shift+F6, y me salen estos errores:

    com.griaule.grfingerjava.GrFingerJavaException: General error
    at com.griaule.grfingerjava.GrFingerJava.initializeCapture(GrFingerJava.java:127)
    at procedimientos.Util.inicializarCaptura(Util.java:33)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:31)
    at interfaz.PantallaPrincipal$4.run(PantallaPrincipal.java:216)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


    No se si esto sea problema de licencia ya que esta esta en el lugar como se indico en el tuto uno,

    cualquier ayuda quedare agradecido.

    ResponderBorrar
  42. hola amigo tengo un problema con la aplicacion que estoy tratando de hacer es la que aparese en este blog
    este es el mensaje que arroja cuando corro la aplicacion
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no grfingerjava in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.griaule.grfingerjava.GrFingerJavaNative.loadLibrary(GrFingerJavaNative.java:46)
    at com.griaule.grfingerjava.GrFingerJavaNative.(GrFingerJavaNative.java:28)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:106)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:238)
    Java Result: 1

    ResponderBorrar
  43. Qué tal oscar,

    Te comento que el error es debido a que los archivos .dll no se encuentran en la carpeta indicada, checate la primera parte del tutorial y verifica que todo esté donde debe estar.

    Saludos.

    ResponderBorrar
  44. y ainstale el SDK de Java pero cuando corro el ejemplo que biene con el SDK me dice que no encuentra licencia. ¿Que tengo que hacer?

    ResponderBorrar
  45. hola monillo tengo un proflema cuando corro la aplicacion que estoy creando de este blog este es le error
    Exception in thread "main" java.lang.NullPointerException
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:27)
    at bioacceso.Main.main(Main.java:26)
    espero que puedas ayudarme

    ResponderBorrar
  46. hola monillo007, ultimamente he seguido tu blog, y te debo de ser sincero al decir que eres un excelente programador, actualmente me encuentro haciendo un programa que utiliza un lector de huella digital y lo primero que quiero hacer antes de seguir con mi proyecto es hechar a andar tu ejemplo de un lector ya que es de donde quiero vasarme para hacer uno propio, apenas voy en el capitolo dos aunque ya lei las 5 partes y al intentar correr el programa me sale la siguiente excepcion:

    com.griaule.grfingerjava.GrFingerJavaException: Invalid license
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at precedimientos.Util.inicializarCaptura(Util.java:40)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:87)
    at interfaz.Main.main(Main.java:12)

    quiziera saber si me puedes ayudar y tambien si me puedes pasar el Fingerprint SDK JAVA 2007 ya que yo estoy trabajando con el 2009 y quiza eso provoque el error, sin mas que decir me despido enviandote un saludo y dandote las gracias.

    ResponderBorrar
  47. Hola.. Segui las instrucciones del tutorial pero me sale este error:

    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at Procedimientos.Util.inicializarCaptura(Util.java:89)
    at Interfaz.PantallaPrincipal.(PantallaPrincipal.java:44)
    at Main.main(Main.java:9)

    Como lo puedo solucionar?? Agradezco mucho tu ayuda!!

    ResponderBorrar
  48. hola una preguntota ,, hice todo bien, segun yo, la clase main y ambos paquetes funcionan bien, todo al pie de la letra pero me aparece este error


    run:
    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:35)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:36)
    at huellas.Main.main(Main.java:23)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 1 minute 13 seconds)


    ojala puedas ayudarme de antemano gracias

    ResponderBorrar
  49. Hola una consulta, cuando ejecuto el programa no enciende el lector de huella dactilar, como puedo saber si es compatible, ya que la maquina si lo detecta pero no el programa

    ResponderBorrar
  50. Hola una pregunta la funcion onSensorPlug y onSensorUnplug en que momento se llama porque no encienden la luz del lector de huella dactilar no se si eso tenga algo q ver o acaso es el modelo que no es compatible. Pero el modelo del lector si es reconocido por la maquina.

    De antemano agradezco tu ayuda.

    ResponderBorrar
  51. Qué tal,

    Te comento que existe una lista de modelos compatibles en este vinculo, te recomiendo que la revises y verifíques si el que tienes aparece ahí.

    Un saludo.

    ResponderBorrar
  52. Gracias, he revisado la lista de productos y si es compatible el lector que tengo es Suprema Biomini pero cuando ejecuto el programa no prende la luz del lector. Una observacion cuando instalo el Fingerprint SDK Java 2007 y luego el FingerCap 1.2 al final me sale un aviso sobre el libusb-win32 a que se refiere. Tiene que ver acaso con el driver del lector?

    Agradezco de antemano tu respuesta.

    ResponderBorrar
  53. Qué tal,

    Con qué sistema operativo estás trabajando?

    ResponderBorrar
  54. Hola estoy trabajando con el sistema operativo Windows XP(32 bits) y el modelo que tengo es el Suprema Biomini. El unico problema es que no prende la luz del lector

    ResponderBorrar
  55. no puedo encontrar el finger print sdk java 2007
    ayuda por favor!!!!!!!! es un proyecto importante profecional y con el 2010 no tengo las librerias que vienen en el trial 2010 no puedo importar las clases me dice que no existen...

    ResponderBorrar
  56. Hola antes k nada excelente post he!! de primera estoy siguenlo pero al terminar la parte 2 me marca este error ya verifique que los .jar esten en la carperta correcta, me gustaria saber si puedes ayudarme con este error...
    Exception in thread "main"java.lang.UnsupportedOperationException: Not yet implemented at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:31)
    at ejepmlo.Main.main

    Muchas graxias de ante mano , saludos

    ResponderBorrar
  57. Buen día Anónimo,

    Lo que sucede es que dentro de los métodos onFingerDown() y onFingerUp() debes de implementar el comportamiento que requiera tu aplicación, por ello te manda una excepción de que no está implementado aún, incluso puedes no hacer nada dentro de ellos y omitir la defición de la excepción (que actualmente solo se usa como recordatorio de que no has definido un comportamiento para dichos métodos).

    Espero haberte ayudado. Saludox.

    ResponderBorrar
  58. segui el tuto al pie de la letra y mi codigo no tiene ningun error sin embargo me aparece el siguiente error al correr la aplicación

    om.griaule.grfingerjava.GrFingerJavaException: Invalid license
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:51)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:85)
    at lectorhuella.Main.main(Main.java:20)


    sera que es por la version de griaule que descargue?

    ResponderBorrar
  59. hola disculpa pero podrias publicar el link de descarga otra vez tengo algunos errores y no entiendo en donde esta la falla muchas gracias por tu ayuda

    ResponderBorrar
  60. Hola Monillo, chequé tu blog y me interesó tu proyecto como guía a uno que hago en java también. Mi problema es el siguiente:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\pthreadVC2.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.griaule.grfingerjava.GrFingerJavaNative.loadLibrary(GrFingerJavaNative.java:44)
    at com.griaule.grfingerjava.GrFingerJavaNative.(GrFingerJavaNative.java:26)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:128)
    at ejemplolectorhuellas.Main.main(Main.java:23)
    Java Result: 1

    Lo de la librería me sale desde que instalo el Fingerprint_SDK_Java_2007_Installer.jar, me dice que no se encuentra una librería y que podría no funcionar, qué podrá ser?

    ResponderBorrar
  61. En qué sistema operativo estás instalando el SDK?

    ResponderBorrar
  62. En windows 7, de 64 bits

    ResponderBorrar
  63. Qué tal Jonathan,

    El problema que comentas se debe al sistema operativo, te recomiendo probar en un entorno de 32 bits, de preferencia XP que fue en su momento el sistema con el cual se desarrolló el tutorial.

    Saludox.

    ResponderBorrar
  64. Bueno Monillo!! Muchas gracias por la información... Puedo cambiar de ubicación las carpetas, me refiero a cambiar de Archivos de Programa a Archivos de programa(x86) o mejor de una vez en un sistema de 32 bits?? En serio, gracias por la ayuda, lo estaré probando. Muy buena página, es de bastante utilidad (:

    ResponderBorrar
  65. Puedes intentarlo, incluso te alentaría a que lo hicieras y nos compartieras los resultados, en caso de que no te funcione puedes hacer lo que te comento.

    Saludox.

    ResponderBorrar
  66. Bueno, lo intenté y no dio resultado, sigue saliendo lo mismo, probaré en otra PC, Gracias por la ayuda!

    ResponderBorrar
  67. hola monillo007 e seguido los pasos pero al intentar correr la aplicación me arroja este error...

    run:
    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:96)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:43)
    at ejemplolectorhuellas.Main.main(Main.java:22)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 12 seconds)


    Agradecería mucho tu ayuda ¡!!

    ResponderBorrar
  68. hola que tal como estas? estoy tratando de hacer este ejercicio con un lextor que viene incluido en una hp dv6000, no marca error ni nada pero no muestra nada, tiene algo que ver el lector??

    ResponderBorrar
  69. Qué tal,

    Te comento que sí puede ser el lector, verifica directamente en www.griaule.com si tu lector esté entre los lectores compatibles.

    Saludox.

    ResponderBorrar
  70. Hola Luis, Muchas Gracias por el aporte, si he avanzado en el proyecto, ya solo me falta resolver estos errores, por favor ayúdame:

    Exception in thread "main" java.lang.IllegalArgumentException: C:\Program Files\Griaule\Fingerprint SDK Java 2009 in is not a directory.
    at com.griaule.grfingerjava.GrFingerJava.setNativeLibrariesDirectory(GrFingerJava.java:71)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:127)
    at ejemplolectorhuellas.Main.main(Main.java:22)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

    Ya casi lo logro gracias a ti.

    ResponderBorrar
  71. Qué tal,

    El error que te aparece indica que el directorio que estableciste en grFingerNativeDirectory no existe o no es visible para la aplicación. Intenta cambiar la ruta o verificar los permisos de acceso a esa carpeta.

    Espero haberte ayudado. Saludox.

    ResponderBorrar
  72. Hola amigo, te felicito por el trabajo que haces con todos los amigos del post siempre dando buenas respuestas, he terminado el proyecto del lector digital corre a la perfección, pero no enciende mi lector.

    1.- Esta bien instalado el driver del dispositivo.
    2.- Ejecutado en Win 7 32.
    3.- Digitalperson 4500

    Podría ser el modelo!!, Si alguien le ha funcionado este tutorial con este modelo me podría orientar, por favor.

    Saludos Luis muchas gracias...

    ResponderBorrar
  73. Donde puedo checar la compatibilidad delos dispositivos,se que en la pagina de Griaule pero en que segmento o liga, no veo las compatibilidades de los modelos lectores de huella digital.

    Gracias...

    ResponderBorrar
  74. ya no sale el error, solo que no muestra las capturas del lector, el lector es u 4500, digital personal, ya cheque nuevamente el codigo y esta como tal, pero no muestra las huellas.

    Saludos.

    ResponderBorrar
  75. Hay algunos lectores con los cuales no es completamente compatible esta versión, puede ser que el tuyo esté entre ellos, en cuyo caso tendrías 2 opciones:

    1) Probar con otro lector
    2) Modificar el código para que sea compatible con la versión 2009 del SDK

    Espero pronto hacer otro tutorial para actualizar el SDK a la 2009 y solventar estos problemas.

    Saludos.

    ResponderBorrar
  76. hola ya realice las primeras dos parates del tutorial pero me muestra el siguiente error

    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:60)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:50)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:261)
    Java Result: 1

    no se si el error se deba a que estoy utilizando el finger print sdk java 2009
    porfa si alguien puede proporcionarme un link de donde descargar el finger print sdk java 2007

    ResponderBorrar
  77. Qué tal,

    El problema sí puede ser por la versión, aquí está el link para la 2007
    http://min.us/mvfrHo#1o

    Saludos.

    ResponderBorrar
  78. ok gracias luis Navarro lo checare gracias =)

    ResponderBorrar
  79. hola Luis Navarro queria saber si no sabes como puedo obtener una licencia y mas o menos cuanto me costaria la licencia porfa te lo gradeceria mucho que me brindaras informacion si la tienes cualquiera de las dos si me proporcinaras las dos te lo agradecere muchooo

    ResponderBorrar
  80. Qué tal,

    Mándame un correo a monillo007@gmail.com para pasarte las opciones que hay de licenciamiento.

    Saludos.

    ResponderBorrar
  81. buenas tarde....
    en esta siguiente linea me sale un error:
    this.panelContenedor.add(crearPanelHuella());
    Espero pronta rta gracias

    ResponderBorrar
  82. Qué tal,

    ¿Qué error te aparece?

    Saludos

    ResponderBorrar
  83. Hola Monillo, excelente tutriol tengo el siguiente error:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder([B)I
    at com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder(Native Method)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:103)
    at procedimientos.Main.main(Main.java:16)
    Java Result: 1
    GENERACIÓN CORRECTA (total time: 8 seconds)

    ResponderBorrar
  84. Hola,

    El error es debido a que los archivos .dll no se encuentran en la carpeta indicada, checate la primera parte del tutorial y verifica que todo esté donde debe estar.

    Saludos.

    ResponderBorrar
  85. me saca el error de la licencia como lo puedo reparar

    ResponderBorrar
  86. Alguna idea del porque aparece este error con dos lectores?

    com.griaule.grfingerjava.GrFingerJavaException: General error
    at com.griaule.grfingerjava.GrFingerJava.startCapture(GrFingerJava.java:181)
    at procedimientos.Util.onSensorPlug(Util.java:137)
    at com.griaule.grfingerjava.GrFingerJavaNative.callbackStatus(GrFingerJavaNative.java:155)

    He instalado el sdk2007, copie las dll a system32, copie la libreria .jar a ext de java y la agregue... pero me sale ese error, me falta algo por realizar o estoy haciendo algo mal?

    Gracias por su Ayuda

    ResponderBorrar
  87. usualmente cuando aparece un error en algo en initializeCapture es de licencia o algo parecido pero este no se de que es.

    com.griaule.grfingerjava.GrFingerJavaException: General error
    at com.griaule.grfingerjava.GrFingerJava.initializeCapture(GrFingerJava.java:127)
    at procedimientos.Util.inicializarCaptura(Util.java:117)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:41)
    at interfaz.PantallaPrincipal$3.run(PantallaPrincipal.java:194)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
    at java.awt.EventQueue.access$000(EventQueue.java:102)
    at java.awt.EventQueue$3.run(EventQueue.java:662)
    at java.awt.EventQueue$3.run(EventQueue.java:660)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

    ResponderBorrar
  88. SOLUCIÓN AL ERROR DE LA LICENCIA:
    Si les sale un mensaje que dice algo asi como "Licencia no encontrada o error", hacer lo siguiente:
    1.- Ir a la carpeta C:\Program Files\Griaule\Fingerprint SDK Java 2007\bin.
    2.- Copiar el archivo GrFingerLicenseAgreement.txt
    3.- Pegar el archivo anterior en la carpeta C:\Windows\System32

    Y listo!!! con eso debe correr tu programa, ahora si puedes continuar con el apartado 3 de este tutorial que el amigo Luis comparte con nosotros.

    ResponderBorrar
  89. Hola tengo un problema:
    Estoy utilizando lector digitalPersona 4500, SDK 2009 con licencia.
    En mi aplicacion para solicitar la huella abro una ventana donde valido la huella, con sdk 2007 todo funcionaba perfecto con el lector digitalpersona 4000.
    El error me ocurre en la función

    private void initFingerprintSDK() {
    try {
    fingerprintSDK = new MatchingContext();
    //Starts fingerprint capture.
    GrFingerJava.initializeCapture(this);<---Linea de Error se queda bloqueada la aplicación

    } catch (Exception e) {
    //If any error ocurred while initializing GrFinger,
    //writes the error to log
    ui.writeLog(e.getMessage());
    }
    }

    Lo extraño es que en ocaciones si funciona y otra veces no. En algunos intentos el error me pasa al primer intento y otra veces pueden pasa hasta el intento 20 o 100. Otro comportamiento extraño es que un icono "Griule Tool" se abre y cierra en la barra del escritorio cada vez que se inicializa y se cierra cada vez que se finaliza la captura.

    ResponderBorrar
  90. Ayuda...he leido y leido y dejo las librerias en los path del tutorial pero me sale este error y en el mensaje del 7 de agosto de 2012 17:44 indican copiar GrFingerLicenseAgreement.txt pero no lo encuentro.

    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:41)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:28)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:203)
    Java Result: 1

    ResponderBorrar
  91. Que tal,

    El archivo de licencia al que te refieres se encuentra en la carpeta de instalación del Griaule, usualmente en la carpeta C:\Archivos de Programa\Griaule\Fingerprint SDK Java 2007\bin.

    Una vez que lo ubiques lo copias a donde te indica el tutorial y listo.

    Saludos.

    ResponderBorrar
  92. Gracias Luis...

    Estoy trabajando con el sdk 2009 y este archivo no aparece,cuando se descarga el sdk griaule en tu cuenta genera un serial trial y por mi conexion de red el proxy bloqueaba mi autenticacion una vez solucionado esto cuando se corre el formulario me aparece este error

    Saludos y gracias por tu ayuda.

    com.griaule.grfingerjava.GrFingerJavaException: General error
    at com.griaule.grfingerjava.GrFingerJava.initializeCapture(GrFingerJava.java:127)
    at procedimientos.Util.inicializarCaptura(Util.java:35)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:28)
    at interfaz.PantallaPrincipal$4.run(PantallaPrincipal.java:230)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

    ResponderBorrar
    Respuestas
    1. ¿Lograste corregir este error? Sé que ha pasado bastante tiempo, pero si recuerdas, ¿podrías decirme como?

      Gracias de antemano.

      Borrar
  93. Saludos amigos,

    Para todos los que estamos interesado en este desarrollo cuando no se enciende el lector, instalemos DigitalPersona One Touch for Windows RTE sin conectar el lector, una vez reiniciada la maquina el lector es reconocido.

    Saludos...esto lo hice para el U.are.U 4500

    ResponderBorrar
  94. Gracias Luis...seguimos con el tercero mil gracias

    ResponderBorrar
  95. Estimado Monillo he seguido tu tutorial hasta aqui, realmente muy bueno, pero quisiera que me ayudes con algo.
    El tutorial lo he seguido con el SDK 2009, y como lector de huellas tengo al DigitalPersona U.are.U 4500. Cuando hago correr el programa en NetBeans pareciera que ocurre un error cuando trata de conectarse con el dispositivo. En la parte de onSensorPlug me detecta el dispositivo como DPMSBBC94A pero luego nada mas. No captura las acciones con los dedos, ni nada. Que puede ser???

    ResponderBorrar
  96. amigo todo va muy bn y el tutorial excelente... pero no entiendo por qué me sale este error :

    Exception in thread "main" java.lang.NullPointerException
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:32)
    at lectorhuellas.LectorHuellas.main(LectorHuellas.java:25)

    ALGUIEN PUEDE AYUDARME CON ESO?

    ResponderBorrar
  97. Qué tal Juan Pablo,

    Estás tratando de utilizar un objeto que no ha sido inicializado, verifica la línea 32 de la clase PantallaPrincipal.

    Saludos

    ResponderBorrar
  98. Hola amigo, de antemano muchas gracias por tu aporte, de comento hago el mismo proceso y me sale un error License not found or read error
    no he podido arancar el aplicatio, tengo w7 63 bits , alguna manera para corregirlo y el enlace de descarga ya esta vencido.

    Gracias Hombre

    ResponderBorrar
  99. Hola excelente tutorial pero tengo un problema cuando compilo me arroja el siguiente error y no se como resolverlo?
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\grfingerjava.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.griaule.grfingerjava.GrFingerJavaNative.loadLibrary(GrFingerJavaNative.java:49)
    at com.griaule.grfingerjava.GrFingerJavaNative.(GrFingerJavaNative.java:31)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:95)
    at ejemplolectorhuellas.EjemploLectorHuellas.main(EjemploLectorHuellas.java:23)
    Java Result: 1

    ResponderBorrar
  100. Qué tal Julio Cesar,

    El problema radica en que la dll del driver está hecha para un sistema que corra a 32bits y tu equipo actualmente cuenta con un AMD a 64bit, en este caso puedes hacer una de dos cosas: 1) Probar este en una computadora con un procesador y sistema operativo a 32 bits o 2)Ubicar en el sitio de Griaule el archivo dll para un sistema de 64 bit.

    Espero haberte ayudado. Saludos.

    ResponderBorrar
  101. Primero q nada un saludo. excelente tutorial. mi primera pregunta y la mas importante esta herramienta es compatible con Ubuntu?

    y de ser así, con ubuntu donde podría colocar los archivos .dll??

    ResponderBorrar
  102. Buenas tarde smuy buen tutorial como hago para solucionar este error o como hago para ingresarle la licencia a sdk

    com.griaule.grfingerjava.GrFingerJavaException: Invalid license
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:47)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:38)
    at HuellasUniAmazonia.main.main(main.java:21)
    Java Result: 1

    ResponderBorrar
  103. men tengo un problema en la creacion de la clase util me manda un error ne la tempalte y en el nombre de la pantallaPrincipal aqui error clase util


    /** La plantilla de la última imagen de huella capturada */
    me manda error aca -----public Template template;


    y en la pantallaPrincipal erros aca

    private void formWindowActivated(java.awt.event.WindowEvent evt) {
    // TODO add your handling code here:
    ----------aca this.panelContenedor.add(crearPanelHuella());
    }

    ResponderBorrar
  104. Nestor,

    En Ubuntu no se necesitan los .dll, en ese caso tomas los .so, puedes verificar la configuración para Linux en la página de Griaule Biometrics

    Ferley,

    Verifica que hayas realizado correctamente los pasos de configuración mencionados en la parte 1 del tutorial.

    NARDLEO,

    Para poder darme una idea del error necesito que me indiques exactamente qué error es, de preferencia copia lo que te aparece en la consola de Java para mejor referencia.

    Saludos.

    ResponderBorrar
  105. amigo como hago cuando creo el ejecutable no corre....

    ResponderBorrar
  106. Hola , Estoy trabajando en el Tuturial Pero me sale un error en el Metodo "public Template template;" y en el Importado "import interfaz.PantallaPrincipal;" Que puedo hacer ahí? Gracias :D

    ResponderBorrar
  107. Hola, he realizado todos los pasos indicados pero la app no se ve, se compila bien pero no abre ninguna ventana ni nada, a que puede deberse?

    Esto sale cuando genero la aplicacion

    ant -f C:\\Users\\SkAr\\Documents\\NetBeansProjects\\EjemploLectorHuellas jar
    init:
    deps-jar:
    Updating property file: C:\Users\SkAr\Documents\NetBeansProjects\EjemploLectorHuellas\build\built-jar.properties
    compile:
    Created dir: C:\Users\SkAr\Documents\NetBeansProjects\EjemploLectorHuellas\dist
    Copying 1 file to C:\Users\SkAr\Documents\NetBeansProjects\EjemploLectorHuellas\build
    Nothing to copy.
    Building jar: C:\Users\SkAr\Documents\NetBeansProjects\EjemploLectorHuellas\dist\EjemploLectorHuellas.jar
    To run this application from the command line without Ant, try:
    java -jar "C:\Users\SkAr\Documents\NetBeansProjects\EjemploLectorHuellas\dist\EjemploLectorHuellas.jar"
    jar:
    BUILD SUCCESSFUL (total time: 0 seconds)

    ResponderBorrar
  108. Donde descargamos el:

    Fingerprint_SDK_Java_2007_Installer .jar

    ResponderBorrar
  109. Andres Felipe
    https://lisbioid.googlecode.com/svn-history/r6/trunk/Biometrico/Fingerprint_SDK_Java_2007_Installer.jar

    ResponderBorrar
  110. Hola

    no me muestre la imagen con el código:
    this.panelContenedor.add(crearPanelHuella());

    pero si pongo este código:
    this.add(crearPanelHuella());

    que se muestran en la imagen.

    penso que o problema está nos painéis.
    Não coloca um sobre o outro.
    Como faço?

    ResponderBorrar
  111. buen dia monillo disculpa tengo un error al ejecutar el main me podrias alludar por favor gracias te lo agradeseria que tengas un buen dia

    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:93)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:39)
    at ejemplolectorhuellas.EjemploLectorHuellas.main(EjemploLectorHuellas.java:26)

    ResponderBorrar
  112. Hola...espero puedas contestar mi mensaje, estoy probando tu codigo y al compilarlo me aparece en la consola lo siguiente BUILD SUCCESSFUL (total time: 1 second), tengo entendido que se ejecuto sin ningun error, pero la aplicacion no carga que deberia aparecerme exactamente???

    ResponderBorrar
  113. Buenas tardes como obtengo una licencia griaule.grfingerjava, es que el programa me dice que la licencia es de prueba y no me ejecuta el programa

    ResponderBorrar
  114. Como estan? Me tira error de importacion en la clase Util, que puede ser? Ya importe todo lo que dice en el tutorial, pero no reconoce "com.griaule"

    ResponderBorrar
  115. Hola que tal, he seguido su tuto, pero resulta que me aparece éste error:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder([B)I
    at com.griaule.grfingerjava.GrFingerJavaNative.GrSetLicenseFolder(Native Method)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:130)
    at ejemplolectorhuellas.Main.main(Main.java:23)

    REVISE LOS ARCHIVOS .DLL Y TAMBIÉN EL ARCHIVO .JAR Y SI ESTÁN EN SU LUGAR, ESPERO PUEDAN AYUDAR, SALUDOS..........

    ResponderBorrar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social? Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo. En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber. Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo… Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece. La solución a tu problema tras el salto...

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle . En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos. Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.