JPL / SWI Prolog配置失败

我现在正在配置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.(Query.java:176) at Versions.main(Versions.java:11) 

在网上搜索之后,我发现很多人只是得到java.lang.UnsatisfiedLinkError: no jpl in java.library.pathjava.lang.UnsatisfiedLinkError: no jpl in java.library.path这是因为PATH变量的设置,而不是我在这里得到的错误: java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I (是的,在行的末尾有一个“I”)。

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

我已将问题发送到swi-prolog.org提供的官方邮件列表(swi-prolog@lists.iai.uni-bonn.de),幸运的是有人帮助我certificate版本6.2中存在一些问题0.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中的问题已经找到,我就会在这里添加一些注释。

BTW,据我所知,到目前为止,遇到此问题的人正在使用32位Windows。

尝试通过“运行”>“运行配置”>“[项目名称]”将路径添加到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”选项卡。 单击“添加外部jpl.jar ..”并找到您的jpl.jar

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

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

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