SWI-Prolog не может запускать внешние процессы через JPL - PullRequest
1 голос
/ 21 января 2020

Я скачал последнюю версию SWI-Prolog и следовал инструкциям по ее сборке. Никаких проблем, все тесты прошли нормально. Я разработал инструмент, написанный на Прологе, который использует подпрограмму Python с использованием встроенной функции process / 2 для ее вызова. Это работает хорошо.

Проблемы возникают, когда я пытаюсь использовать JPL для вызова кода Пролог из интерфейса Java. Все идет хорошо, пока Prolog не попытается выполнить этот вызов подпрограммы Python: Java не может выполнить встроенную функцию SWI-Prolog "process / 2".

Отслеживание ошибки, следующей за :

ERROR: /usr/local/lib/swipl/library/process.pl:57:
/usr/local/lib/swipl/library/process.pl:57: Initialization goal raised exception:
'$open_shared_object'/3: /usr/local/lib/swipl/lib/x86_64-linux/process.so: undefined symbol: Sfilefunctions
ERROR: Exported procedure process:process_kill/2 is not defined
ERROR: Exported procedure process:process_group_kill/2 is not defined
ERROR: Exported procedure process:process_set_method/1 is not defined
ERROR: Exported procedure process:process_wait/3 is not defined
Exception in thread "main" org.jpl7.PrologException: PrologException: error(existence_error(procedure, ':'(process, '/'(process_create, 2))), context(':'(process, '/'(process_create, 3)), _0))
at org.jpl7.Query.fetchNextSolution(Query.java:437)
at org.jpl7.Query.hasMoreSolutions(Query.java:341)
at org.jpl7.Query.hasNext(Query.java:240)
at org.jpl7.Query.allSolutions(Query.java:621)
at com.frantiz.pipeline.tools.PrologCodeLauncher.executeAnaphoraRes(PrologCodeLauncher.java:49)
at com.frantiz.pipeline.tools.PrologCodeLauncher.executeCode(PrologCodeLauncher.java:26)
at com.frantiz.pipeline.Pipeline.main(Pipeline.java:42)

Я дважды проверил наличие libjpl.so и libswipl.so в переменных $LD_PRELOAD и $LD_LIBRARY_PATH. На самом деле не могу получить никакой подсказки из этого.

Любая помощь приветствуется, спасибо.

...