tuProlog - 使用带有consult的多个文件 - 无法通过consult(otherFile.pl)获取引擎来加载其他文件

时间:2017-03-28 18:42:23

标签: java prolog tuprolog

编辑:清晰度 - 主要.pl文件加载,它已被告知加载哪些子文件不加载。 (所有咨询(' subfile.pl')。)

我有一个使用tuProlog的Java项目。它将理论称为:

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

这是根据手册。 file.pl与其他prolog文件存在于同一文件夹中。 在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文件中的咨询是否正确?

有人可以发一个如果不这样做的例子吗?手册并没有详细阐述这个主题。

由于

1 个答案:

答案 0 :(得分:1)

本手册的部分内容略显过时 - 它表示使用consult / 1,而其他地方则表示不推荐使用consult / 1,而include / 1则是替代品。

其次,当使用2p.jar时,它会从Project根目录中读取Prolog文件作为其根。创建jar时,2p.jar不能在项目jar中。它们应该在相对文件夹中,并且2p.jar以2p.jar的位置读取Prolog文件作为root。它似乎无法读入项目jar内部。

希望这很清楚!