tuProlog — использование нескольких файлов с консультациями — не удается заставить движок загружать дополнительные файлы с консультациями (otherFile.pl)

Редактировать: Ясность - загружается основной файл .pl, это все подфайлы, которые ему было сказано загрузить, но которые не загружаются. (все консультации('subfile.pl').)

У меня есть проект Java, который использует tuProlog. Он называет теорию как:

Theory theory = new Theory(":-consult('main.pl').");
        engine.setTheory(theory);

Это согласно мануалу. file.pl находится в той же папке, что и другие файлы пролога. Внутри main.pl у меня есть еще

consult('otherfile.pl').

операторы для загрузки дополнительных файлов (несколько).

Структура папок такова:

src/main.pl
src/Prolog_Files/otherfile.pl (multiple)
src/main/java/JavaStuff

Я не могу заставить движок загружать теории, о которых я сказал, чтобы они консультировались внутри основного файла.pl

  • Я пробовал: указать абсолютный путь, а не просто имя файла.
  • перемещение файлов вокруг.

Мне интересно, есть ли что-то в использовании tuProlog, которого я не понимаю?

Теория работает при загрузке:

Theory theory = new Theory(new FileInputStream(url_of_file)).

Однако это вызывает у меня проблемы при создании jar, так как он не может найти местоположение файла.

Я пытаюсь правильно загрузить файл? Являются ли мои консультации внутри основного файла .pl правильными?

Может ли кто-нибудь опубликовать пример того, как это должно быть сделано, если нет? В мануале эта тема не раскрыта.

Спасибо


person R.Sama    schedule 28.03.2017    source источник


Ответы (1)


Руководство частично устарело — в нем говорится, что нужно использовать consult/1, тогда как в других местах говорится, что Consult/1 устарел, а include/1 является заменой.

Во-вторых, при использовании 2p.jar он читает файлы Prolog из корня проекта как его корень. При создании jar файл 2p.jar не может находиться внутри jar проекта. Они должны быть в относительных папках, и 2p.jar читает файлы Prolog с расположением 2p.jar как root. Не похоже, что он может читать внутри банки проекта.

Надеюсь, это достаточно ясно!

person R.Sama    schedule 28.03.2017