2

我想使用 JPL 为我的项目创建图形界面,所以我去搜索了一个代码示例以开始使用,我下载了代码,但是当我运行它时,它显示以下消息:

ERROR: c:/program files/swipl/library/jpl.pl:4243:
        '$open_shared_object'/3: Não foi possível encontrar o módulo especificado (this stands for "it wasn't possible to find the especified module)".

ERROR: c:/program files/swipl/library/jpl.pl:4243:
        c:/program files/swipl/library/jpl.pl:4243: Initialization goal raised exception:
        library `java' does not exist (Please add directory holding java.dll to %PATH%)
ERROR: c:/users/User/desktop/system/medical expert system.pl:4:
        Exported procedure jpl:jpl_c_lib_version/1 is not defined

当我尝试使用它显示的代码的一个功能时:

ERROR: Undefined procedure: jpl:jni_func/3
ERROR: In:
ERROR:   [14] jpl:jni_func(6,'javax/swing/JFrame',_10490)
ERROR:   [13] jpl:jFindClass('javax/swing/JFrame',_10522) at c:/program files/swipl/library/jpl.pl:1631
ERROR:   [12] jpl:jpl_type_to_class(class([javax|...],['JFrame']),_10554) at c:/program files/swipl/library/jpl.pl:3049
ERROR:   [11] jpl:jpl_new_1(class([javax|...],['JFrame']),['Expert System'],_10606) at c:/program files/swipl/library/jpl.pl:169
ERROR:   [10] jpl:jpl_new('javax.swing.JFrame',['Expert System'],_10664) at c:/program files/swipl/library/jpl.pl:138
ERROR:    [9] interface2 at c:/users/User/desktop/system/medical expert system.pl:180
ERROR:    [7] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

我有点试图将包含 java.dll 的文件夹放到系统变量中的 PATH 中,但它一直显示相同的消息我的 SWI-Prolog 是 7.6.4 64 位版本,我认为代码本身没有任何问题,因为有在我下载它的视频中没有人抱怨它。

编辑:消息说 java.dll 现在已经消失了,现在只剩下 2 条其他消息,我已经在系统变量下的路径中包含了我认为相关的所有内容。

4

1 回答 1

1

确保CLASSPATH系统变量中的变量包含jpl.jar与 SWI-Prolog 捆绑的文件的路径。例如,在我的 Windows 7 VM 中,我从 SWI-Prolog 中获取:

?- getenv('CLASSPATH', P).
P = 'c:/program files/swipl/lib/jpl.jar'.

我所有使用 JPL 的代码在这个变量定义中运行良好。此外,加载 JPL 库应该打印类似的内容(假设最近的 SWI-Prolog 版本):

?- use_module(library(jpl)).
% Extended DLL search path with
%   'c:/Program Files/Java/jre1.8.0_201/bin/server'
%   'c:/Program Files/Java/jre1.8.0_201/bin'

更新

尝试JAVA_HOME在系统变量中定义变量。我在我使用的 macOS 上:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home

该路径在 Windows 上会有所不同,具体取决于您安装的 Java 版本,但应以HOME.

于 2019-02-06T19:18:41.217 回答