IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

UnsatisfiedLinkError sur methode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut UnsatisfiedLinkError sur methode
    Bonjour à tous,

    je cherche une solution à mon problème qui semble être courant mais sans succès.

    J'obtiens le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java.lang.UnsatisfiedLinkError: maMethode
    at package.monInterface.maMethode(Native Method)
    at autre.package.methodeAppelantLaPrecedente(MaClasse.java:129)
    at autre.package.run(Moteur.java:387)
    at java.lang.Thread.run(Unknown Source)
    Je fais un appel à la méthode System.loadLibrary ou System.load :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public void chargerDLL() {
     
    	try {
    		System.loadLibrary("maLibDLL");
    	} catch (java.lang.UnsatisfiedLinkError e) {
     
    		File file = new File("");
     
    		String os = System.getProperty("os.name");
    		if (os.startsWith("Win")) {
    			try {
    				System.load(
    					file.getAbsolutePath() + "/lib/maLibDLL.dll");
    		} catch (java.lang.UnsatisfiedLinkError ule) { ... }
    	}
    }
    Visiblement il ne trouve pas la méthode native maMethode...
    Quelqu'un aurait il connu le même problème ?

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, ta dll doit être spécifiée dans le classpath ou située dans un répertoire qui lui est dans le classpath.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut, je travaille avec Eclipse. Je suis en train de poursuivre un projet qui avait été débuté mais inachevé. L'application se sert d'une autre dll mais je ne la vois pas apparaitre dans le classpath, et pourtant ça marche très bien.

    Je ne suis pas sur de bien comprendre...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ah, oui en effet, autant pour moi ! Tu as raison !
    Merci beaucoup !

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Pourtant il n'y a pas d'autres solutions, soit la dll est dans le path, soit on la charge en faisant System.load(path) et dans ce cas on utilises un chemin complet.
    D'après ton code, si la dll n'est pas dans le path, ça va chercher dans le répertoire lib de ton application.

    EDIT ok

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait ça ne marche pas non plus. Ce qu'il se passe c'est que la dll est bien chargée au début mais après au lancement de la fonction ça plante.

    L'application utilise des moteurs permettant de faire des opérations, selon un mode de fonctionnement on va charger une dll plutot qu'une autre.
    Dans Eclipse je vois qu'il suffit d'ajouter le dossier lib contenant les dll. J'ai procédé de la même façon pour créer mon moteur mais ce ne fonctionne pas mieux.

    Le classpath c'est bien là ou on ajoute les dépendances comme par exemple des jar ou autre ressources? Je ne vois pas de dossier incluant des dll pour l'ancien moteur...

  7. #7
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Regarde où se trouve la dll de l'ancien moteur et tu mets la nouvelle au même endroit
    J'ai déja vu des gens mettre les dll dans windows/system32, qui se trouve par défaut dans le path de windows.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JNI UnsatisfiedLinkError sur une methode
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 16/02/2011, 14h39
  2. java.lang.UnsatisfiedLinkError sur ma methode native
    Par fk04 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/03/2010, 10h23
  3. erreur sur methode fill
    Par flex@ dans le forum C#
    Réponses: 2
    Dernier message: 30/03/2008, 01h37
  4. info sur methode connect
    Par awalter1 dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 19/09/2007, 17h06
  5. Pb debutant sur methode TRIM()
    Par kitesilver dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo