==== 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.(SubprocessEngine.java:171) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:176) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:184) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:188) at com.declarativa.interprolog.SWISubprocessEngine.(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.(SubprocessEngine.java:171) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:176) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:184) at com.declarativa.interprolog.SubprocessEngine.(SubprocessEngine.java:188) at com.declarativa.interprolog.XSBSubprocessEngine.(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 kodu (z rozdziału 2): - Powyższy kod należy skopiować np. do notatnika i zapisać go pod nazwą **CarInterProlog.java** oraz należy zmienić ścieżkę (w kodzie) do pliku uruchomieniowego prologu w konstruktorze SWISubprocessEngine() na ścieżkę na danej maszynie, jeżeli jest inna (czyli należy zmienić napis **C:\\Programme\\pl\\bin\\plcon.exe**). - 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ć [[pl:prolog:prolog_lab:prolog_lab_2#cwiczenieprosty_system_ekspertowy|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 INTERPROLOG_HOME\interprolog.jar CarJPL.java**, gdzie INTERPROLOG jest katalogiem, w którym znajduje się InterProlog (czyli np. C:\Programy\interprolog212). - Powyższy kod jest skompilowany i gotowy do uruchomienia. Aby go uruchomić należy w konsoli wywołać następujące polecenie: **java -cp INTERPROLOG_HOME\interprolog.jar;"." CarInterProlog**, gdzie INTERPROLOG jest katalogiem, w którym znajduje się InterProlog (czyli np. C:\Programy\interprolog212).