Jar文件无法加载Prolog。

3
在Netbeans中它可以正常运行,但当我尝试从jar文件中运行它时,它无法加载Prolog并停在那里。我使用的代码是:
Term consult_arg[] = {
    new Atom("C://Users//dmpasd//Documents//NetBeansProjects//Anemia//src//anemia//new.pl")
};
Query consult_query
        = new Query(
                "consult",
                consult_arg);

boolean consulted = consult_query.hasSolution();

if (!consulted) {
    System.err.println("Consult failed");
    System.exit(1);

}

我的下一步是将newAtom更改为


new Atom(Diagnosis.class.getResource("new.pl").getPath())

但是仍然没有任何进展。

它只有main.java作为main.class,没有其他文件。新文件存在为"new.pl"。 - Debbie Mp
如 http://www.swi-prolog.org/packages/jpl/installation.html 所述,你需要正确设置 jpl.jar、jpl.dll 和 jpl.pl。我猜测你的 classpath 缺少了 jpl.jar。尝试运行 java -cp .:path\to\jpl.jar main。 - Jan
以上是代码。如果你指的是这个,那么这段代码附加在一个JButton上。 - Debbie Mp
在NetBeans中,jpl.jar已经包含在您的运行时环境中(否则甚至无法编译),但如果您作为可执行jar启动,则不是这样。您该如何运行它? - Jan
我会尝试并告诉你结果的。谢谢:)) - Debbie Mp
显示剩余9条评论
1个回答

3

假设您拥有以下目录布局:

YourProject/
YourProject/gui.jar
YourProject/lib/jpl.dll
YourProject/lib/jpl.jar
YourProject/lib/jpl.pl
YourProject/lib/libpl.dll

然后您可以创建。
YourProject/startme.cmd 

以下是需要翻译的内容:

使用下列内容:

REM @ECHO OFF
cd %CD%
java -Djava.library.path=.\lib\ -classpath gui.jar;lib\jpl.jar -jar gui.jar
pause

现在开始运行那个,看看会发生什么。

请检查我的修改(将cmd更改为输出更多内容),然后再次运行并编辑您的问题以显示输出。 - Jan
线程“AWT-EventQueue-0”中的异常 org.jpl7.PrologException: PrologException:error(existence_error(source_sink, 'file:/C:/Users/dmpasd/Desktop/Anemia/Anemi a.jar!/anemia/new.pl'), _0) at org.jpl7.Query.get1(Query.java:308) at org.jpl7.Query.hasMoreSolutions(Query.java:238) at org.jpl7.Query.oneSolution(Query.java:659) at org.jpl7.Query.hasSolution(Query.java:718) - Debbie Mp
这个就看你了 - 这是一个 Prolog 异常,所以现在 Prolog 子系统已经激活。 - Jan
你的jar包中是否包含了anemia/new.pl文件? - Jan
好的...问题出在 new Atom(Diagnosis.class.getResource("new.pl").getPath()) - Debbie Mp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接