尝试在 OS X 中使用 JPL 和 YAP Prolog 时引发的异常

2022-09-03 03:03:50

我正在尝试使用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中此问题的解决方法吗?


答案 1

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


答案 2

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

有关更多详细信息,请查看此处:

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


推荐