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 :

Erreur "archive .jar : dll can't find dependent libraries"


Sujet :

Eclipse Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Erreur "archive .jar : dll can't find dependent libraries"
    Bonjour,

    Voici un problème dont je n'ai pas trouvé de solution sur le net.

    J'ai exporté une archive .jar avec Eclipse. Dans cette archive, j'ai ajouté des librairies externes (.jar) et des dll natives. Lorsque je lance l'exécution du .jar, l'erreur "java.lang.unsatisfiedlinkerror: ... dll : Can't find dependent libraries" se produit. Cela provient du fait qu'une des dll natives dépend d'une autre dll. Sous Eclipse cela fonctionne bien et cette autre dll est à la racine du projet. Cette autre dll est également dans l'archive mais à l'exécution du .jar, l'archive ne la trouve à l'évidence pas. Pour que cela fonctionne, j'ai donc été obligé de mettre une copie de la dll en question à côté de l'archive.

    Ma question est la suivante : comment faire pour résoudre cette erreur et indiquer à l'archive qu'elle possède bien la dll qu'elle recherche ? Je ne recherche ni de solution où il faut modifier le PATH windows, ni de solution où il faut mettre la dll dans le répertoire bin du jre.

    Merci.

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Une des solutions les plus répandues consiste à extraire la (les) dll(s) de ton jar dans un dossier temporaire et de la (les) charger de là.
    Un petit exemple bricolé à la va-vite:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public static void main(final String[] args) {
      final String iDLLName = "test.dll";
      final InputStream iStream =
        MyClass.class.getResourceAsStream("/dll/" + iDLLName);
      final String iTmpDir = System.getProperty("java.io.tmpdir");
      final File iParentFolder = new File(iTmpDir, "dll");
      iParentFolder.mkdir();
      final File iDllFile = new File(iParentFolder, iDLLName);
      if (!iDllFile.exists()) {
        try {
          iDllFile.createNewFile();
        } catch (final IOException iException) {
          iException.printStackTrace();
        }
      }
      if (iStream != null) {
        FileOutputStream iOutStream = null;
        try {
          iOutStream = new FileOutputStream(iDllFile);
          final byte[] iBuffer = new byte[1024];
          while (iStream.read(iBuffer) > 0) {
            iOutStream.write(iBuffer);
          }
        } catch (final FileNotFoundException iException) {
          iException.printStackTrace();
        } catch (final IOException iException) {
          iException.printStackTrace();
        } finally {
          if (iOutStream != null) {
            try {
              iOutStream.flush();
              iOutStream.close();
              iStream.close();
            } catch (final IOException iException) {
              iException.printStackTrace();
            }
          }
        }
        System.load(iDllFile.getAbsolutePath());
      }
    }
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Merci, cette solution me convient

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

Discussions similaires

  1. [JNI] can't find dependant libraries
    Par ManusDei dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 12/01/2012, 20h44
  2. java.lang.UnsatisfiedLinkError: Can't find dependent libraries
    Par fasfousba dans le forum Général Java
    Réponses: 8
    Dernier message: 27/07/2011, 13h33
  3. Can't find dependent libraries
    Par Micke7 dans le forum Langage
    Réponses: 7
    Dernier message: 08/04/2010, 15h31
  4. [Débutant] Erreur "can't find unit Messages"
    Par Gargoyle dans le forum Pascal
    Réponses: 6
    Dernier message: 07/04/2007, 00h49

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