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 kodu (z rozdziału 2):

  1. 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).
  2. 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).
  3. Należy na konsoli wejść do katalogu, gdzie znajdują się pliki z naszymi programami.
  4. 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).
  5. 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).
pl/miw/miw08_prolog_java/interprolog.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0