17

我正在尝试使用 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 X 中,我在 Ubuntu 中尝试过,一切正常。

有人知道 OS X 中这个问题的解决方法吗?

4

2 回答 2

2

将 Yap 更新到 6.2.2 后,JPL 工作正常。不幸的是,我不能完全确定这个问题确实与我使用的以前的 Yap 版本(6.2.0)有关,或者它与其他东西有关。

于 2012-11-08T14:37:44.723 回答
0

看起来你必须设置一个特殊的使用标志来支持 swi-prolog 中的线程。

在此处查看更多详细信息:

http://comments.gmane.org/gmane.comp.ai.prolog.swi/5335

于 2011-11-03T20:26:17.337 回答