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因为PATH变量的设置而得到,而不是我在这里得到的错误:(java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I是的,行尾有一个“I”)。

以前有没有人收到过这个错误?我已经尝试了几个以前版本的 SWI-Prolog,但也遇到了其他类型的错误。我正在使用 Eclipse IDE 进行 Java 开发——我错过了什么吗?

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 版本。要记住三件事:

  1. 在环境变量的系统变量下添加一个新变量SWI_HOME_DIR,并将路径设置为你安装SWI-Prolog的地方(我的是D:\swipl);

  2. 将路径 %SWI_HOME_DIR%\bin 添加到 PATH 变量中,而不是使用“D:\swipl\bin”之类的内容。(否则会出现【致命错误:找不到系统资源】)

  3. 将路径 %SWI_HOME_DIR%\lib\jpl.jar 添加到您的 PATH 变量中,而不是使用“D:\swipl\lib\jpl.jar”之类的内容。(否则会出现【致命错误:找不到系统资源】)

如果您使用 Eclipse 进行 Java 开发,那么您似乎不需要在 IDE 中进行配置。只要按照上面的3个步骤,把正确的jar文件添加为外部库,应该没问题。

我不确定临时解决方案是否适用于所有人,但绝对有问题的每个人都应该先尝试这种方法。只要解决了6.2.0版本的问题,我就在这里补充一些意见。

顺便说一句,据我所知,到目前为止,有问题的人使用的是 32 位 Windows。

于 2012-09-06T22:52:51.200 回答
2

尝试通过 Run > Run Configuration > [project name] 将路径添加到 java.library.path 并在“VM Arguments”选项卡下添加以下内容。

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

此外,在“环境”选项卡下,添加以下内容:

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

之后,转到 Project > Properties > Java Build Path,选择“Libraries”选项卡。单击“添加外部 JARS..”并找到您的jpl.jar.

于 2012-09-05T15:56:59.063 回答
0

Great Great Great,第二个答案是解决方案

  1. 创建 SWI_HOME_DIR 变量以设置 swi prolog 安装目录 SWI_HOME_DIR -------- C:\Program Files\swipl
  2. 将 PATH 设置为指向库和 bin,如下所示 PATH ------ %SWI_HOME_DIR%\bin;%SWI_HOME_DIR%\lib\jpl.jar

这解决了我的问题“线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 窗口中没有 jpl”它有点罕见,但它可以找到。

于 2015-02-02T10:30:31.513 回答
0

我有同样的问题。除了设置 PATH 之外,您还需要验证安装的 SWI 程序是否与您的 JVM 具有相同的架构(32 或 64)。

于 2015-10-22T12:31:29.670 回答