Исключение выдается при попытке использовать JPL и YAP Prolog в OS X - PullRequest
17 голосов
/ 14 июля 2011

Я пытаюсь использовать 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?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2012

После обновления Yap до 6.2.2 JPL работает правильно. К сожалению, я не могу быть полностью уверен, что проблема действительно была связана с предыдущей версией Yap, которую я использовал (6.2.0), или она была связана с чем-то другим.

0 голосов
/ 04 ноября 2011

Похоже, вы должны установить специальный флаг использования для поддержки потоков в swi-prolog.

Смотрите здесь для более подробной информации:

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

...