Java et SWI-Prolog sur Eclipse
Bonjour a tous et a toutes. Je crie au secours...
Je suis sur une application java qui utilise SWI-Prolog sur Eclipse via JPL. Je suis debutant sur Prolog et je ne suis pas non plus fan de java. J' ai tout de mem parcouru ce forum et cela m a beaucoup edifie sauf que j ai quelques questions de debutants qui perdurent.
1. J'ai pris, sur le net, un petit code en Prolog, comme l environnement n est pas entierement celui du Prolog( Je suis dans Eclipse), je ne sais pas ou aller(i.e. ou trouver l'interpreteur de commande dans eclipse) pour faire des requetes prolog afin d executer, sans prealablement tenir compte de Java.
2. Si je veux par exemple invoquer Prolog dans mon programme Java, comment faire?
Merci de me repondre.
@bientot, je l espere
prolog et java sur eclipse
en fait, j ai essaye d executer en utilisant l outil External tools mais il se produit cette erreur:
Exception occurred executing command line.
Cannot run program "C:\Documents and Settings\Administrator\workspace\conflictDetector\src\fam.pl" (in directory "C:\Documents and Settings\Administrator\workspace\conflictDetector\src"): CreateProcess error=193, %1 ²»ÊÇÓÐЧµÄ Win32 ӦÓó
et je sais pas pourquoi?
Pour ce qui est de la seconde question, je voudrais savoir s il n ya pas au moins une ligne de code a ecrire afin que JPL fasse la liaison entre les deux ou la liaison est elle automatique?
je te remercie tout de meme de m ouvrir les yeux a ce sujet.
@bientot je l' espere.
prolog et java sur eclipse(OS Windows)
je te remercie Cyber..
Je trouve tes reactions tres cool dans le forum... et tes reponses me font vraiment progresser. Cependant, en parcourant le forum, j ai entendu certains membres speculer sur l'utilisaton de l'interface JNI
1. Aurais-je besoin du JNI en plus comme interface de communication? car il me semble qu il sert uniquement a interfacer uniquement le C/C++ et Java.
2.je veux creer une classe java pour invoquer un fichier prolog(input de mon appli Java)depuis java de sorte que java reponde a mes requetes(faits et regles)comme Prolog l'aurait fait dans un environnement qui lui est propre(interpreteur prolog).
question: quequ'un pourrait il m eclairer pour demarrer, ou aurait il pris connaissance d'un bout de code pouvant m'aider.
Merci d'avce
ou se trouve erreur prolog et java sur eclipse?
bonjour a tous.
j ai ecris un le code ci-dessous en java pour verifier par la query q1, que mon fichier prolog fam.pl est convenablement consulte. Seulement, ce code m'affiche l'erreur suivante:
erreur jpl.PrologException: PrologException: error(existence_error(source_sink, 'D:workspaceonflictDetectorsrc\fam.pl'), _0)
et je sais pas pourquoi?
j'ai meme essaye d'ajouter la classe JPLException dans le meme package que ma classe java:access et sa pas marche.
Si quelqu'un si connait, priere de me venir en aide.
Merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
import jpl.Query;
public class access
{
public access() {
}
public static void main( String argv[] )
{
// access ac =new access();
try
{
String t1 = "consult('D:\\workspace\\conflictDetector\\src\\fam.pl')";
Query q1 = new Query(t1);
System.out.println( t1 + " " + (q1.hasSolution() ? "succeeded" : "failed") );
}
catch(Exception e)
{
System.out.println("erreur " + e.toString());
return;
}
}
} |
suite:probleme de var globale-locale java
Bonjour cyber, je te remercie une fois de plus pour ta reponse, sayez, cette question est regle. Cependant, j'ai un autre souci: le chargement de mon fichier prolog etant correct, j' ai essaye d'ecrire le code ci-joint, pour qu'il reponde a une requete specifique; mon code semble bon,sauf qu'il m'affiche dans la console ceci:
% D:/workspace/conflictDetector/src/fam compiled 0.00 sec, 2,720 bytes
consult('D:/workspace/conflictDetector/src/fam') succeeded
X = null
X = null
Test 2
cela signifie qu'en sortant de run1(),il ecrase X, ce qui est normal,puisque une var declare dans une fonction n'existe que pdt l'exe.de la fonction.
Qyestion?je sais que je dois m'arranger a avoir une var globale, mais depuis trois jours, je galere, j'ai tout tente et je ne sais plus quoi faire? je joins au mail suivant mon code et si quelqu'un a une idee, qu'il n'hesite pas a m'aider.
Merci et a bientot.
moncodejava pour variableglobale
le fichier prolog est bien consulte et je ne sais comment gerer la variable X...
SVP, dites moi exactement ou je dois bidouiller pour recuperer le resultat de la fonction run1() dans la variable X.
Code:
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| import jpl.*;
import java.util.Hashtable;
public class Test2 {
//private static Variable X = new Variable();
/**
* @param args
*/
public Test2(){
}
public void run(){
// Test2 Test =new Test2();
try
{
/* String t1 = "consult"(["fam.pl"]);
Query q1 = new Query(
"consult",
new Term[] {new Atom("['fam.pl']")});
boolean t2 = (q1.query());
System.out.println( t1 + "test " + t2);*/
String t1 = "consult('D:/workspace/conflictDetector/src/fam')";
Query q1 = new Query(t1);
System.out.println( t1 + " " + (q1.hasSolution() ? "succeeded" : "failed") );
}
catch(Exception e)
{
System.out.println("erreur " + e.toString());
return;
}
}
public void run1(){
Variable X = new Variable();
Term args[] = { X, new Atom("joe" )};
Query q4 =
new Query(
"child_of",
args);
java.util.Hashtable[] solutions = q4.allSolutions();
for ( int i=0 ; i< solutions.length ; i++ ) {
System.out.println( "X = " + (solutions[i].get(X)));
}
System.out.println(" Test" + " " + solutions.length);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test2 Test = new Test2();
Test.run();
Test.run1();
}
} |