我正在尝试使用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中此问题的解决方法吗?
答案 0 :(得分:2)
将Yap更新为6.2.2后,JPL正常运行。不幸的是,我不能完全确定问题确实与之前使用的Yap版本(6.2.0)相关联,或者它与其他内容有关。
答案 1 :(得分:0)
看起来你必须设置一个特殊的use-flag以支持swi-prolog中的线程。
在此查看更多详情: