1

编辑:清晰 - 加载主 .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

我无法让引擎加载我告诉它在主 file.pl 内部咨询的理论

  • 我试过:给它绝对路径,而不仅仅是文件名。
  • 四处移动文件。

我想知道 tuProlog 的使用是否有什么我不理解的地方?

该理论在加载时有效:

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

但是,这在构建 jar 时引起了我的问题,因为它找不到文件位置。

我是否尝试正确加载文件?我在主 .pl 文件中的咨询是否正确?

有人可以发布一个例子,如果没有,应该如何做?该手册没有详细说明这个主题。

谢谢

4

1 回答 1

1

该手册的部分内容有些过时 - 它说使用咨询/ 1,而在其他地方它声明不推荐使用咨询/ 1,而包含/ 1 是替代品。

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

希望这足够清楚!

于 2017-03-28T22:13:28.753 回答