Both sides previous revision
Poprzednia wersja
|
|
pl:miw:miw08_prolog_java:interprolog [2008/05/26 02:22] miw |
pl:miw:miw08_prolog_java:interprolog [2008/05/26 02:23] miw |
==== 1. Faza implementacji - uwagi, problemy. ==== | |
<code java> | |
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) ; | |
} | |
} | |
| |
</code> | |
| |
Pojawia się podczas uruchomienia następujący błąd: | |
| |
<code java> | |
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) | |
</code> | |
| |
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 | |
<code java> | |
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) | |
| |
</code> | |
| |
Okazało się, że bez podania w konstruktorze SWIPrologEngine dokładnej ścieżki do pliku uruchomieniowego prologu. | |
| |
<code java> | |
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) ; | |
} | |
} | |
| |
</code> | |
Okazuje się również, że nie należy podawać kropki na końcu wywołanego polecenia prologowego. | |
| |
==== 2. Implementacja systemu eksperckiego. ==== | |
| |
<code java> | |
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") ; | |
} | |
} | |
</code> | |
| |
| |
| |
| |
==== 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 zmienić ścieżkę do pliku uruchomieniowego prologu w konstruktorze SWISubprocessEngine() na ścieżkę na danej maszynie (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). | |
| |