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

Java Discussion :

Java prolog JPL


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut Java prolog JPL
    je suis entrain de faire la connexion entre java et prolog. J'ai installe swi prolog nouvelle version qui inclut le JPL.jar mais le probleme que j'ai le met dans le class path mais j'ai recu toujours cette erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    in thread "main" java.lang.UnsatisfiedLinkError: no jpl in java.library.path
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:822)
    	at java.lang.System.loadLibrary(System.java:993)
    	at jpl.fli.Prolog.<clinit>(Prolog.java:82)
    	at jpl.Query.open(Query.java:305)
    	at jpl.Util.textToTerm(Util.java:162)
    	at jpl.Query.<init>(Query.java:210)
    	at dadax.Test.test_0(Test.java:71)
    	at dadax.Test.run_tests(Test.java:49)
    	at dadax.Test.main(Test.java:43)
    Merci pour votre aide

  2. #2
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    J'ai exactement le même problème, et je serais ravi d'avoir un coup de main.

  3. #3
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    J'ai trouvé la solution sous linux :

    il y a un paquet de fichiers (*.so) dans le répertoire jpl/lib/i366-linux, il faut les copier dans /usr/lib.
    Me demande pourquoi c'est pas fait automatiquement à l'install de SWI, m'enfin bon...

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Eusebius Voir le message
    il y a un paquet de fichiers (*.so) dans le répertoire jpl/lib/i366-linux, il faut les copier dans /usr/lib.
    Le principe est le même sous tous les systèmes, il que les librairies natives soit disponible pour la JVM. Pour cela il y a principalement deux solutions :
    • Les copier dans un répertoire système (/usr/lib, c:\windows\system32, etc.).
    • Ajouter le répertoire qui les contient dans le PATH.


    On peut également modifier la propriété "java.library.path" mais je le déconseille...

    Pour info les librairies se nomment *.dll sous Windows et lib*.so sous Unix/Linux.
    Dans ce cas c'est la librairie jpl qui était introuvable, et donc le fichier jpl.dll sous Windows ou libjpl.so sous Linux/Unix...

    a++

  5. #5
    Membre confirmé Avatar de ludo86
    Homme Profil pro
    Développement applications iOS/android
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développement applications iOS/android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Je relance le topic avec un problème similaire. J'a donc moi aussi un fichier prolog que je souhaite faire fonctionnner sous java.

    J'ai bien transféré les *.dll (jpl.dll et libpl.dll) dans le dossier C:\WINDOWS\system32, dans le build path j'ai bien inclus pl.jar, cependant j'ai toujours les erreurs suivantes :

    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
    42
     
     
    Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jpl.dll: Can't find dependent libraries
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    	at java.lang.ClassLoader.loadLibrary(Unknown Source)
    	at java.lang.Runtime.loadLibrary0(Unknown Source)
    	at java.lang.System.loadLibrary(Unknown Source)
    	at jpl.fli.Prolog.<clinit>(Prolog.java:82)
    	at jpl.Query.open(Query.java:283)
    	at jpl.Util.textToTerm(Util.java:162)
    	at jpl.Query.Query1(Query.java:183)
    	at jpl.Query.<init>(Query.java:176)
    	at ascesseurProlog.Requete.<init>(Requete.java:16)
    	at verificateur.verificateurSynthaxe.isSentenceCorrect(verificateurSynthaxe.java:60)
    	at fenetrePrincipale.calculatrice.actionPerformed(calculatrice.java:55)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Voici comment je procéde pour accéder au prolog :

    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
     
     
    package ascesseurProlog;
     
    import jpl.*;
    import java.awt.*;
    import java.lang.*;
    import java.util.Hashtable; 
     
    public class Requete 
    {
    	protected Query query;
     
    	public Requete(String sentence)
    	{
    		query = new Query(
    		        "child_of",
    		        new Term[] {new Atom("joe"),new Atom("ralf")}
    		    );
     
    		System.out.println(
    			    "child_of(joe,ralf) is " +
    			    ( query.query() ? "provable" : "not provable" )
    			);
    	}
    }
    Le code prolog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    child_of(joe, ralf).
    child_of(mary, joe).
    child_of(steve, joe).
     
    descendent_of(X, Y) :-
            child_of(X, Y).
    descendent_of(X, Y) :-
            child_of(Z, Y),
    		descendent_of(X, Z).

  6. #6
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    Salut.

    Je fais un petit up parce que je deviens fou. Je ne trouve pas où télécharger le fichier jpl.jar Il n'est pas installé avec ma version de SWI-Prolog sous Ubuntu, et pas moyen de trouver un paquet qui le contiendrait.

    Si quelqu'un pouvait m'aider ce serait chic

    @+
    Rémi

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    voilà, tu la trouveras ci-joint.
    Bonne continuation.
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip jpl.zip (24,1 Ko, 352 affichages)

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    je suis sous windows et je le même problème que les autres participants à cette discussion.
    j'ai convenablement configurer mon path mais ça ne marche pas.
    quelqu'un aurait t'il une idée?
    merci.

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    j'ai modifié le path, j'ai mis les .dll dans le dossier c:\Windows\system32 et ça ne marche pas. j'ai même modifier la variable java.library.path (ici) mais tjs rien il y a cette maudite exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jpl.dll: Can't find dependent libraries
            at java.lang.ClassLoader$NativeLibrary.load(Native Method)
            at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
            at java.lang.Runtime.loadLibrary0(Runtime.java:822)
            at java.lang.System.loadLibrary(System.java:993)
            at jpl.fli.Prolog.<clinit>(Prolog.java:82)
            at jpl.Query.open(Query.java:283)
            at jpl.Util.textToTerm(Util.java:162)
            at jpl.Query.Query1(Query.java:183)
            at jpl.Query.<init>(Query.java:176)

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    j'ai trouvé la solution sous Windows : il faut mettre les fichiers libpl.dll et jpl.dll dans C:\Archive de programme\Java\jdk1.5.11\bin
    pour moi ça a été C:\Program Files\Java\jdk1.5.0_11\bin
    Bonne continuation

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut idem mais sous linux
    Bonjour,
    J'ai le même problème que vous mais sous linux ( pas eu de pb pour la config java/swi-prolog sous windows).

    - J'ai ajouté le jar comme librairie via éclipse.(lib locale, jar présent dans le workspace)
    - J'ai créé un répertoire /bin dans mon home user où j'ai versé pelle-mèle les .so , le jpl.pl et une copie du jar
    - j'ai ajouté dans le Path de linux ce répertoire ainsi que le chemin vers l'executable
    - j'ai également modifié le java.library.path

    et j'ai toujours le même pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no jpl in java.library.path
    Je suis nul sous linux. Est-ce qu'il faut modifier le .bashrc et le .bash_profile plutôt que directement la variable d'environnement (PATH) ?
    Je ne suis pas admin sur cette machine, est-ce que je dois demander à mettre tous les .so (les libraires) dans le /bin de la jdk ?
    Autre chose que j'ai raté ?

    merci d'avance.

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut résolu
    C'est bon, j'ai trouvé.

    Bien, en fait ce n'est pas dans le path qu'il faut mettre le chemin pour trouver la librairie libjpl.so mais dans LD_LIBRARY_PATH !! (doc de m...)

    1° ouvrezle fichier .bash_profile situé dans le répertoire Home ( fichier caché --> activez l'option de l'explorateur de fichier pour le voir.)
    2° en fin de fichier, ajoutez le chemin qui mène au répertoire où ce trouve votre fichier dans le LD_LIBRARY_PATH (c'est pour le chargement de librairies dynamiques) :

    exemple, si votre librairie est dans /home/maurice/swi/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/maurice/swi/
    ++

  13. #13
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    Bonjour, désolé de déterrer un peu ce topic.
    J'ai le jpl.jar, que j'ai ajouté a mon projet java, mais je ne trouve pas les dll, quelqu'un peut me dire ou les télécharger ?

  14. #14
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut les dll
    les voilà.
    bon courage.
    Fichiers attachés Fichiers attachés

  15. #15
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    Merci.
    Maintenant j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.6.0_10\jre\bin\jpl.dll: Can't find dependent libraries
    Pourtant j'ai bien mis les dll dans bin.

    Quelqu'un a une idée?

    Merci d'avance

  16. #16
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par robert34 Voir le message
    Pourtant j'ai bien mis les dll dans bin.
    Il doit t'en manquer une... pour faire fonctionner Prolog, plusieurs dll sont nécessaires. Tu peux les récupérer en installant swi-prolog (par exemple).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  17. #17
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    au lieu de les mettre dans le JRE,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Java\jdk1.6.0_10\jre\bin\
    tu dois les mettre dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Java\jdk1.6.0_10\bin

  18. #18
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Par défaut
    Bonjour,
    même après avoir essayé les diverses options mentionnées sur cette page, je n'ai toujours pas réussi à faire marcher tout ça.

    J'ai d'abord essayé de mettre jpl.dll et libpl.dll dans C:\Windows\System32 et je recevais l'erreur :
    "Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\jpl.dll: Can't find dependent libraries"

    Après avoir vu des messages sur ce forum disant de mettre jpl.dll et libpl.dll dans "C:\Program Files\Java\jdk1.7.0_03\bin", je l'ai fait et j'ai reçu le message d'erreur suivant comme si mon jdk1.7 n'était pas dans le chemin par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no jpl in java.library.path
    	at java.lang.ClassLoader.loadLibrary(Unknown Source)
    	at java.lang.Runtime.loadLibrary0(Unknown Source)
    	at java.lang.System.loadLibrary(Unknown Source)
    	at jpl.JPL.loadNativeLibrary(JPL.java:100)
    	at jpl.fli.Prolog.<clinit>(Prolog.java:85)
    	at jpl.Query.open(Query.java:286)
    	at jpl.Util.textToTerm(Util.java:162)
    	at jpl.Query.<init>(Query.java:198)
    	at prolog.Versions.main(Versions.java:12)
    Je reçois par contre le message d'erreur suivant lorsque je mets des deux fichiers dans le dossier C:\Program Files\Java\jre7\bin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jre7\bin\jpl.dll: Can't find dependent libraries
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    	at java.lang.ClassLoader.loadLibrary(Unknown Source)
    	at java.lang.Runtime.loadLibrary0(Unknown Source)
    	at java.lang.System.loadLibrary(Unknown Source)
    	at jpl.JPL.loadNativeLibrary(JPL.java:100)
    	at jpl.fli.Prolog.<clinit>(Prolog.java:85)
    	at jpl.Query.open(Query.java:286)
    	at jpl.Util.textToTerm(Util.java:162)
    	at jpl.Query.<init>(Query.java:198)
    	at prolog.Versions.main(Versions.java:12)
    Aussi, j'ai essayé de me faire une library Eclipse avec le jpl.jar et en mettant le lien des libraries (C:\Program Files\pl\bin), mais j'ai le même message d'erreur que plus haut (soit ''no jpl in java.library.path'')même si System.out.println(System.getProperty("java.library.path")); me retourne "C:\Program Files\pl\bin" (le dossier se trouve j'avais mis jpl.dll et libpl.dll dedans).

    Il est à noté que je n'ai pas trouvé de fichier libpl.dll dans le SWI-Prolog que j'ai téléchargé (j'ai retéléchargé aujourd'hui pour faire sûr (http://www.swi-prolog.org/download/s...n/w64pl600.exe)). J'ai donc pris celui posté dans ce topic.

    Quelqu'un a une idée?

Discussions similaires

  1. jpl: communication with prolog from java
    Par odysseus dans le forum Général Java
    Réponses: 0
    Dernier message: 20/01/2010, 15h29
  2. Réponses: 5
    Dernier message: 14/05/2008, 18h14
  3. Java & Prolog encore
    Par Fredd_b dans le forum Prolog
    Réponses: 1
    Dernier message: 22/05/2006, 00h39

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