我有一个用prolog编写的专家系统,当我从java界面运行它时会给我带来问题。问题与产出的通信有关。我试过Streams但是(只有这个项目)他们不能正常工作,应用程序显然在写txt文件时冻结,我这样做:
myFunction(CurPlace, Place) :-
open('text.txt',write,Stream), nl(Stream),
write(Stream,'You cant go from '), write(Stream,CurPlace), write(Stream,' to '), write(Stream,Place), nl(Stream),close(Stream),
fail.
在写作结束时,我用java读取了txt,使用我所有的旧系统,这种方法运行正常,但是对于推理或递归调用,可能出现问题(java-side,因为如果我直接从swiprolog运行它一切顺利)! 所以我决定使用jpl_get并打电话,但我是新手。我需要一些帮助! 在我的界面中,我有一个jtextarea,它打印prolog系统的所有输出。我把它称为" jTextAreaOUTPUT",这个组件在我的java类接口中。
我的项目文件夹是(在Windows中): " main_folder"然后在里面我(像所有的eclipse项目)src,bin ...我把prolog系统pl文件放在main_folder中,所以interface.java的路径是: 的src / mypackage的/ interface.java 如何打印我的示例消息" Start Message"在我的jtextarea? 我试过这个:
start:- jpl_get( 'src.mypackage.interface', jTextAreaOUTPUT, X),
jpl_call(X,append,['Start Message\n']).
...在我的Java应用程序中,我以这种方式调用查询:
public static void CallQuery(String t2){
Query q2 = new Query(t2);
try{
q2.hasSolution();
} catch (Exception e) {
}
}
t2" start"当我从main()调用它时!所以当我运行它时,系统会给我" ClassNotFoundException"!
问题1)有人能给我一个做我想做的好榜样吗?
问题2)变量X在jpl get和call中的作用是什么?
问题3)如果我想打印变量,我该怎么做?