我正在尝试使用JPL来实现Java程序和YAP Prolog之间的交互。
在我的java文件中,这一行抛出了一个异常:
Query query = new Query("consult", new Term[] { new Atom("test.pl") });
例外如下所示:
Exception in thread "main" jpl.JPLException: this Query's engine is not that which is attached to this thread
at jpl.Query.close(Query.java:511)
at jpl.Util.textToTerm(Util.java:165)
at jpl.Query.Query1(Query.java:183)
at jpl.Query.<init>(Query.java:176)
at Test.main(Test.java:12)虽然我没有发现有人在YAP中报告了同样的问题,但有些人在使用SWI时遇到了这个问题,他们被建议验证SWI是使用多线程支持进行编译的。为了以防万一,我编译了支持多线程的YAP,但它没有帮助。
这个问题只发生在OS上,我在Ubuntu上试过了,一切都很好。
有没有人知道在OS X中解决这个问题的方法?
发布于 2012-11-08 22:37:45
在将Yap更新到6.2.2之后,JPL可以正常工作。不幸的是,我不能完全确定这个问题是否确实与我使用的前一个Yap版本(6.2.0)有关,或者与其他因素有关。
发布于 2011-11-04 04:26:17
看起来你必须设置一个特殊的use-flag来支持swi-prolog中的线程。
有关更多详细信息,请查看此处:
http://comments.gmane.org/gmane.comp.ai.prolog.swi/5335
https://stackoverflow.com/questions/6694092
复制相似问题