Java non résolu.lang.UnsatisfiedLinkError pour la classe FaceRecognizer


Bonjour!

Je travaille sur un projet de reconnaissance faciale en utilisant java mais j'ai eu cette erreur sur la classe FaceRecognizer:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.compa.opencv.nativec.FisherFaceRecognizerID.createFisherFaceRecognizer_1()J
    at com.compa.opencv.nativec.FisherFaceRecognizerID.createFisherFaceRecognizer_1(Native Method)
    at com.compa.opencv.nativec.FisherFaceRecognizerID.<init>(FisherFaceRecognizerID.java:15)
    at com.compa.opencv.PlayMain.createRecognizer(PlayMain.java:128)
    at com.compa.opencv.PlayMain.cameraRecognize(PlayMain.java:88)
    at com.compa.opencv.PlayMain.main(PlayMain.java:33)

J'ai essayé les solutions dans ces liens ci-dessous mais cela n'a pas fonctionné: s

Obtenir java.lang.UnsatisfiedLinkError': pas de lwjgl en java.bibliothèque.chemin

Exception dans le thread" main " java.lang.UnsatisfiedLinkError: pas d'openalprjni en java.bibliothèque.chemin

Exception dans le fil " main" Java.lang.UnsatisfiedLinkError "

Voici la partie du code qui contient l'erreur:

package com.compa.opencv.nativec;

import org.opencv.contrib.FaceRecognizer;

public class FisherFaceRecognizerID extends FaceRecognizer{

    private static native long createFisherFaceRecognizer_1();

    private static native long createFisherFaceRecognizer_1(int num_components);

    private static native long createFisherFaceRecognizer_2(int num_components,
            double threshold);

    public FisherFaceRecognizerID() {
        super(createFisherFaceRecognizer_1());
    }

    public FisherFaceRecognizerID(int num_components) {
        super(createFisherFaceRecognizer_1(num_components));
    }

    public FisherFaceRecognizerID(int num_components, double threshold) {
        super(createFisherFaceRecognizer_2(num_components, threshold));
    }

}

Code complet ici: https://www.dropbox.com/s/pa415f6lz3zbco7/DemoFaceRecognize-master%20%282%29.zip?dl=0

Je serais reconnaissant avec toute sorte d'aide.

Author: Community, 2017-03-29

2 answers

Me semble que vous utilisez une bibliothèque de reconnaissance faciale tierce qui dépend d'un binaire natif.

Vous devez ajouter ces binaires natifs dans votre chemin de classe, par exemple (*.les fichiers dll sous Windows, ou*. so sous unix ou linux)

UnsatisfiedLinkError - signifie généralement un appel Java Native Interface (JNI) où il ne parvient pas à localiser les fichiers binaires natifs.

Voici une capture d'écran sur eclipse où vous pouvez voir une bibliothèque native dans la source et vous pouvez cliquer sur Modifier et sélectionner le dossier où se trouvent vos fichiers DLL ou so. Voici un écran sur les propriétés du projet eclipse

 0
Author: Itherael, 2017-03-29 08:03:42

C'est la solution temporaire que j'ai trouvé:

Dans le fichier java principal, cliquez avec le bouton droit de la souris -- > Propriétés > > Exécuter/Déboguer les paramètres > > Choisissez le fichier java principal et cliquez sur Modifier > > Arguments> > Dans le champ Arguments de la machine virtuelle, entrez ce qui suit:

-Djava.library.path="C:\Program Files\Java\opencv2.4.13\build\java\x64; C:\Program Files\Java\opencv2.4.13\build\x64\vc12\bin" 

Qui pointera vers le chemin des fichiers dll, mais malheureusement cela n'a pas fonctionné avec moi : (

Quelqu'un a-t-il des suggestions différentes?

 0
Author: J4J, 2017-04-02 05:46:29