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

Entrée/Sortie Java Discussion :

[JNI]problème de chargement de librairie.


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [JNI]problème de chargement de librairie.
    Bonjour,

    J'ai un problème de chargement de librairies JNI. Dans mon cas il s'agit de celles de scilab.
    En pratique, j'inclus un de leurs jars dans mon projet (org.scilab.modules.graphic_export.jar). Dans une de mes classes java, j'ai un appel tout simple à cette api :
    Cela se passe sans problème si je modifie la variable d'environnement système PATH en ajoutant le répertoire bin de l'install de scilab. Ce que j'essaie de faire maintenant est de faire marcher ça sans cette horrible mise à jour du PATH. J'ai modifié java.library.path, mais sans succès.

    Voilà l'erreur que je me prends à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    The native library scigraphic_export does not exist or cannot be found.
    java.lang.UnsatisfiedLinkError: C:\Program Files\scilab-5.1\bin\scigraphic_export.dll: Can't find dependent libraries
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    	at java.lang.System.loadLibrary(System.java:1030)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.<clinit>(Unknown Source)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
    	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
    	at graphics.ScilabTester.main(ScilabTester.java:13)
    Je ne sais pas si je m'y prends bien car je ne suis que novice sous JNI. J'aimerais in fine pouvoir inclure ces libs dans un package distribuable.



    edit :
    Citation Envoyé par le y@m's Voir le message
    D'après le message d'erreur il semblerait qu'il manque d'autres dlls. Je ne connais pas cette API, mais n'y aurait-il pas plusieurs dlls ? Pour ne pas avoir à modifier le PATH, il te faut copier les dll dans un des répertoires définis dans java.library.path (typiquement C:\WINDOWS\system32 en fait parti ).
    Oui, il y a bien d'autres dlls, mais si ça marche en ajustant la variable PATH, pourquoi est-ce que ça ne passe pas avec java.library.path ?

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Ce fichier existe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Program Files\scilab-5.1\bin\scigraphic_export.dll

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    D'après le message d'erreur il semblerait qu'il manque d'autres dlls. Je ne connais pas cette API, mais n'y aurait-il pas plusieurs dlls ? Pour ne pas avoir à modifier le PATH, il te faut copier les dll dans un des répertoires définis dans java.library.path (typiquement C:\WINDOWS\system32 en fait parti ).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par willoi Voir le message
    Ce fichier existe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Program Files\scilab-5.1\bin\scigraphic_export.dll
    Oui.
    Par ailleurs, sous Eclipse, dans les propriétés du jar ci-dessus je peux spécifier le répertoire contenant ses libs JNI. J'ai alors tenté de mettre la même chose que pour la variable PATH. Ça ne marche toujours pas, mais j'ai une autre erreur cette fois :
    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
    The native library scigraphic_export does not exist or cannot be found.
    java.lang.UnsatisfiedLinkError: C:\Program Files\scilab-5.1\bin\scigraphic_export.dll: Can't find dependent libraries
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    	at java.lang.System.loadLibrary(System.java:1030)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.<clinit>(Unknown Source)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
    	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
    	at graphics.ScilabTester.main(ScilabTester.java:13)
    Exception in thread "main" java.lang.UnsatisfiedLinkError: org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.get_GL2PS_MAJOR_VERSION()I
    	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.get_GL2PS_MAJOR_VERSION(Native Method)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
    	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
    	at graphics.ScilabTester.main(ScilabTester.java:13)


    Citation Envoyé par le y@m's Voir le message
    D'après le message d'erreur il semblerait qu'il manque d'autres dlls. Je ne connais pas cette API, mais n'y aurait-il pas plusieurs dlls ? Pour ne pas avoir à modifier le PATH, il te faut copier les dll dans un des répertoires définis dans java.library.path (typiquement C:\WINDOWS\system32 en fait parti ).
    Oui, il y a bien d'autres dlls, mais si ça marche en ajustant la variable PATH, pourquoi est-ce que ça ne passe pas avec java.library.path ?

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par brasinamical Voir le message
    Oui, il y a bien d'autres dlls, mais si ça marche en ajustant la variable PATH, pourquoi est-ce que ça ne passe pas avec java.library.path ?
    Comment modifies tu la propriété java.library.path ?
    Si tu le fait via la méthode System.setProperty(), alors sache que cela ne sert à rien. En effet, les répertoires sont lus au démarrage de la JVM, donc avant l'appel à System.setProperty().
    La seule façon pour modifier cette propriété est de la spécifiée dans la ligne de commande qui lance la JVM :

    java "-Djava.library.path=C:\Program Files\scilab-5.1\bin\" MyApp

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'ai bien essayé avec un System.setProperty(), en vain effectivement.
    J'ai aussi tenté en ajoutant des arguments au JVM dans la config d'exécution Eclipse :
    -Djava.library.path="C:\Program Files\scilab-5.1\bin"

    Et là c'est comme si je n'avais rien spécifié (1re erreur postée) !



    edit :
    Je ne pense même pas copier ces dlls dans C:\Windows\System32 à cause de cette erreur :
    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
    The native library scigraphic_export does not exist or cannot be found.
    java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\scigraphic_export.dll: A dynamic link library (DLL) initialization routine failed
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    	at java.lang.System.loadLibrary(System.java:1030)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.<clinit>(Unknown Source)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
    	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
    	at graphics.ScilabTester.main(ScilabTester.java:13)
    Exception in thread "main" java.lang.UnsatisfiedLinkError: org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.get_GL2PS_MAJOR_VERSION()I
    	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.get_GL2PS_MAJOR_VERSION(Native Method)
    	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
    	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
    	at graphics.ScilabTester.main(ScilabTester.java:13)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'ai essayé le même chose avec d'autres libs (javasci.jar par exemple). -> problème identique

Discussions similaires

  1. Warning php, problème de chargement de librairie
    Par student_php dans le forum Linux
    Réponses: 7
    Dernier message: 17/12/2011, 13h11
  2. [JNA] Problème de chargement de librairie
    Par krapo13 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 16/06/2011, 09h23
  3. Réponses: 1
    Dernier message: 25/03/2010, 13h00
  4. [Débutant] Problème de chargement de librairie
    Par La Fée Dragée dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/07/2009, 17h06
  5. JNI - Problème de chargement de DLL
    Par indepthsight dans le forum C++
    Réponses: 1
    Dernier message: 30/11/2007, 10h19

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