2

私は今JPLを設定していて、Javaを使用してswi-prologを操作したいと思っています。

SWI-Prologの最新の安定バージョンである6.2.0をダウンロードし、D:\swiplにインストールしました。

まず、次のパスをPATH virableに追加しました:D:\ swipl \ bin。これには、必要なすべてのdllファイルが含まれている必要があります。

次に、次のパスをCLASSPATH virableに追加しました:D:swipl \ lib\jpl.jar。これは必要なjarファイルである必要があります。

提供されているバージョンの例を実行しようとすると、次のエラーが発生しました。

Exception in thread "main" java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I
    at jpl.fli.Prolog.thread_self(Native Method)
    at jpl.Query.open(Query.java:286)
    at jpl.Util.textToTerm(Util.java:162)
    at jpl.Query.Query1(Query.java:183)
    at jpl.Query.<init>(Query.java:176)
    at Versions.main(Versions.java:11)

オンラインで検索したところ、ここで発生するエラーではなくjava.lang.UnsatisfiedLinkError: no jpl in java.library.path、変数の設定が原因で多くの人が取得していることがわかりました(はい、行の最後に「I」があります)。PATHjava.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I

誰かが以前にこのエラーを受け取ったことがありますか?以前のバージョンのSWI-Prologをいくつか試しましたが、他の種類のエラーも発生しました。Java開発にEclipseIDEを使用しています-何か見逃したことはありますか?

4

4 に答える 4

4

この問題を swi-prolog.org が提供する公式メーリング リスト (swi-prolog@lists.iai.uni-bonn.de) に送信したところ、幸運にも、バージョン 6.2 にいくつかの問題があることを証明する手助けをしてくれました。 .0. その後、両方ともバージョン 6.0.2 を試しましたが、完全に動作します。彼は、バージョン 6.2.0 の bin フォルダーに swipl.dll がなく、それが問題の原因である可能性があると述べました (そして、私はそれに気付きました)。

私はすでにこの問題を電子メールでスタッフに報告しており、少なくとも今のところ、JPL を構成したい人はバージョン 6.0.2 をダウンロードすることをお勧めします。覚えておくべき 3 つのこと:

  1. 環境変数のシステム変数の下に新しい変数 SWI_HOME_DIR を追加し、SWI-Prolog をインストールした場所へのパスを設定します (私の場合は D:\swipl です)。

  2. 「D:\swipl\bin」などを使用するのではなく、パス %SWI_HOME_DIR%\bin を PATH 変数に追加します。(そうしないと[FATAL ERROR: Could not find system resources]が発生します)

  3. 「D:\swipl\lib\jpl.jar」のようなものを使用するのではなく、パス %SWI_HOME_DIR%\lib\jpl.jar を PATH 変数に追加します。(そうしないと[FATAL ERROR: Could not find system resources]が発生します)

Java 開発に Eclipse を使用している場合、IDE で構成する必要はないようです。上記の 3 つの手順に従い、正しい jar ファイルを外部ライブラリとして追加する限り、問題ありません。

一時的な解決策がすべての人に有効かどうかはわかりませんが、間違いなく、問題を抱えているすべての人が最初にこの方法を試す必要があります. バージョン 6.2.0 の問題が解決されている限り、ここにコメントを追加します。

ところで、私の知る限り、これまでのところ、この問題を抱えている人は 32 ビット Windows を使用しています。

于 2012-09-06T22:52:51.200 に答える
2

[実行] > [実行構成] > [プロジェクト名] を介して java.library.path にパスを追加し、[VM 引数] タブの下に次を追加してみてください。

-Djava.library.path="D:\swipl\bin;."

さらに、「環境」タブで、以下を追加します。

VARIABLE: PATH
VALUE: D:\swipl\bin;${env_var:PATH}

その後、[プロジェクト] > [プロパティ] > [Java ビルド パス] に移動し、[ライブラリ] タブを選択します。「外部JARSを追加..」をクリックして、jpl.jar.

于 2012-09-05T15:56:59.063 に答える
0

グレートグレートグレート、2番目の答えが解決策です

  1. SWI_HOME_DIR 変数を作成して、swi プロローグ インストール ディレクトリを設定します SWI_HOME_DIR ------- C:\Program Files\swipl
  2. この PATH のようなライブラリとビンを指すように PATH を設定します ------ %SWI_HOME_DIR%\bin;%SWI_HOME_DIR%\lib\jpl.jar

これにより、「スレッド「メイン」java.lang.UnsatisfiedLinkErrorの例外:java.library.pathウィンドウにjplがありません」という問題が修正されますが、これは少しまれですが、うまくいきます。

于 2015-02-02T10:30:31.513 に答える