Использование интерфейса JPL SWI-Prolog для работы - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу использовать 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 других сообщения, и я уже включил все, что мне показалось релевантным, в Путь в разделе Системные переменные.

1 Ответ

0 голосов
/ 06 февраля 2019

Убедитесь, что переменная CLASSPATH в системных переменных содержит путь к файлу jpl.jar, который связан с SWI-Prolog.Как в примере, в моей виртуальной машине Windows 7 я получаю из 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.

...