17

Java プログラムと YAP Prolog の相互作用に JPL を使用しようとしています。

私の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 でスレッド化をサポートするには、特別な use-flag を設定する必要があるようです。

詳細については、こちらをご覧ください。

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

于 2011-11-03T20:26:17.337 に答える