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

Eclipse Java Discussion :

Accès à une librairie externe


Sujet :

Eclipse Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 40
    Points
    40
    Par défaut Accès à une librairie externe
    Bonjour,

    je développe une application java sous Eclipse avec une seule classe comportant le main. J'utilise des JARs et des DLLs externes.
    Si j'ai bien tout compris, je spécifie les JARs dans le classpath et le chemin des DLLs dans le path (je suis sous windows).

    Dans un premier temps, je spécifie JAR.jar à l'aide des options d'Eclipse. Ensuite, dans mon main, je wrap DLL.dll à l'aide d'une méthode - reposant sur System.loadLibrary(String libraryName) - qui est contenue dans JAR.jar.
    Donc jusque là tout va bien et j'ai réussi à utiliser une méthode de la jar.

    Cependant, pour l'appel suivant à une méthode de la jar, il me sort l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.UnsatisfiedLinkError: A_init
    	at zenii.A_init(Native Method)
    	at zenii.init
    	at MyMainClass.main
    Exception in thread "main"
    Du coup, je me suis dit trois choses :
    1. Mon path n'est pas bien configuré : j'ai donc créé un lanceur batch qui me permet de configurer mon path (un echo me confirme sa validité) avant de lancer Eclipse, j'ai aussi créé une variable d'environnement en utilisant les options d'Eclipse (Run -> Run ... -> Environment) et enfin, j'ai rajouté le tout dans le java.library.path avec l'argument de vm : -Djava.library.path= ... sans succès
    2. Ma librairie est corrompue ... Si c'est le cas, comment le savoir ?
    3. Ma librairie (dll) ne s'est pas chargée. En effet, la première méthode appelée (qui passe) ne repose que sur la jar alors que la seconde (qui fait planter) repose sur la jar et la dll ... Comment faire pour la charger dans correctement dans ce cas ?
      J'ai aussi essayé de la charger avec la méthode System.load(cheminAbsoluDeLaLib) mais encore une fois sans succès ...


    Du coup, voilà je suis un peu coincé donc si quelqu'un a une idée, elle est la bienvenue.

    Merci et bonne soirée.

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    il faut préciser où sont les librairies dll lors de la configuration des librairies jar. Pour définir une librairie qui fait des appels natifs :
    - Menu : Windows/Preferences
    - Rubrique : Java/Build Path/User Libraries
    - Bouton : New ... (donner un nom à la librairie)
    - Bouton : Add jars ... (ajouter le fichier .jar)
    - Dérouler la branche de la librairie
    - Dérouler la branche du fichier jar
    - Sélectionner "Native Library Location"
    - Bouton "Edit..." (ajouter le dossier qui contient les fichiers .dll)

    Ensuite, dans le projet, il faut ajouter cette nouvelle librairie au classpath (cf. FAQ).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Bonjour et merci pour la réponse

    Par contre, c'est sans effet sur mon problème. En effet, j'ai donc suivi tes instructions en retirant au préalable ma jar du classpath et en créant ma librairie utilisateur.
    J'obtiens exactement la même erreur.

    Du coup, je ne sais pas quoi tirer comme conclusion

    Encore merci pour la réponse en tout cas, j'ai au moins eu une lueur d'espoir

    Après, je ne sais quelles infos supplémentaires sont nécessaires à la bonne compréhension de mon problème ...

  4. #4
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Ben là, si ta librairie DLL contient bien la méthode A_init, je ne vois pas trop. En tout cas, ça n'a pas l'air d'être un problème propre à Eclipse, parce que tu as bien configuré le CLASSPATH et compagnie.

    La librairie DLL est de toi ? Ou on te l'a donné ? Tu peux peut-être l'ouvrir avec un éditeur de C (comme le plugin Eclipse CDT) pour voir ce qu'elle contient ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Merci encore pour ta réaction rapide
    Pour la DLL, elle n'est pas de moi ... par contre, elle est censée marcher à coup sûr vu que c'est loin d'être la première fois qu'elle est utilisée !
    J'ai quand même jeté un coup d'oeil à son contenu mais je n'y ai rien trouvé d'anormal.
    Enfin bon, c'est gentil de t'être penché sur mon problème.
    De toute manière, la personne responsable de ma dll va venir m'aider donc je posterai plus tard la solution de ce post.

    Merci et bonne soirée.

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Hello,
    Tu peux aussi essayer en plaçant les DLLs dans System32 et en ajoutant juste les jars.

    @+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    je n'avais pas vu ta réponse
    Malheureusement, je n'ai pas accès à ce dossier
    Mais effectivement, ça aurait levé le doute sur pas mal de choses !

    Merci et bonne journée.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Bon ben ça y est c'est résolu ...
    Il s'agissait donc d'un problème de mise à jour
    Donc merci pour votre aide, j'aurais au moins appris comment me servir des User Libraries
    Bonne continuation.

    Zenii

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

Discussions similaires

  1. [Servlet] Recourir à une librairie externe
    Par GLDavid dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 27/06/2006, 15h01
  2. [Outils][VS2005] Comment utiliser une librairie externe ?
    Par Djangogol dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 25/05/2006, 11h12
  3. Accés à une dll externe
    Par syrio dans le forum C++
    Réponses: 5
    Dernier message: 07/04/2006, 23h23
  4. [ JBoss ][ JFreeChart ]Ajouter une librairie externe au .jar
    Par Houbbba dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 27/03/2006, 10h26
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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