To jest stara wersja strony!
1. Faza implementacji - uwagi, problemy.
import com.declarativa.interprolog.* ;
import com.declarativa.interprolog.util.* ;
import com.declarativa.interprolog.swi.* ;
public class HelloWorld {
public static void main(String [] args) {
PrologEngine engine = new SWISubprocessEngine() ;
boolean test = false ;
test = engine.deterministicGoal("listing.") ;
System.out.println("Rezultat: " + test) ;
}
}
Pojawia się podczas uruchomienia następujący błąd:
Exception in thread "main" com.declarativa.interprolog.util.IPException: Could not launch Prolog executable:java.io.IOException: CreateProcess: null\plcon error=2
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:171)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:176)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:184)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:188)
at com.declarativa.interprolog.SWISubprocessEngine.<init>(SWISubprocessEngine.java:29)
at HelloWorld.main(HelloWorld.java:8)
Strony przydatne przy pojawieniu się tego typu problemów:
http://www.nabble.com/Re:-interprolog-%2B-windows-(solved)-(fwd)-td15907118.html
Korzystając z XSB
Exception in thread "main" com.declarativa.interprolog.util.IPException: Could not launch Prolog executable:java.io.IOException: CreateProcess: null\xsb error=2
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:171)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:176)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:184)
at com.declarativa.interprolog.SubprocessEngine.<init>(SubprocessEngine.java:188)
at com.declarativa.interprolog.XSBSubprocessEngine.<init>(XSBSubprocessEngine.java:33)
at HelloWorld.main(HelloWorld.java:6)
Okazało się, że bez podania w konstruktorze SWIPrologEngine dokładnej ścieżki do pliku uruchomieniowego prologu.
import com.declarativa.interprolog.* ;
import com.declarativa.interprolog.util.* ;
import com.declarativa.interprolog.swi.* ;
public class HelloWorld {
public static void main(String [] args) {
PrologEngine engine = new SWISubprocessEngine("C:\\Programme\\pl\\bin\\plcon.exe") ;
boolean test = false ;
test = engine.deterministicGoal("listing") ;
System.out.println("Rezultat: " + test) ;
}
}
Okazuje się również, że nie należy podawać kropki na końcu wywołanego polecenia prologowego.
2. Implementacja systemu eksperckiego.
import com.declarativa.interprolog.* ;
import com.declarativa.interprolog.gui.SWISubprocessEngineWindow;
public class CarInterProlog {
public static void main(String [] args) {
SWISubprocessEngine engine = new SWISubprocessEngine("C:\\Programme\\pl\\bin\\plcon.exe") ;
SWISubprocessEngineWindow window = new SWISubprocessEngineWindow(engine) ;
engine.deterministicGoal("[car]") ;
engine.deterministicGoal("start") ;
}
}
3. Instrukcja uruchomienia systemu eksperckiego.
Opis uruchomienia powyższego kodu:
Powyższy kod należy skopiować np. do notatnika i zapisać go pod nazwą CarJPL.java.
Do tego samego katalogu w którym zapisaliśmy powyższy plik należy zapisać plik
car.pl oraz
getyesno.pl (pliki można poprać
tutaj).
Należy na konsoli wejść do katalogu, gdzie znajdują się pliki z naszymi programami.
Należy wywołać następujące polecenie (w konsoli): javac -cp SWI_HOME\lib\jpl.jar CarJPL.java, gdzie SWI_HOME jest katalogiem, w którym znajduje się SWI Prolog (czyli np. C:\Program Files\pl).
Powyższy kod jest skompilowany i gotowy do uruchomienia. Aby go uruchomić należy w konsoli wywołać następujące polecenie: java -cp SWI_HOME\lib\jpl.jar;„.” CarJPL, gdzie SWI_HOME jest katalogiem, w którym znajduje się SWI Prolog (czyli np. C:\Program Files\pl).