java帮助中的Prolog嵌入

java帮助中的Prolog嵌入,java,prolog,Java,Prolog,|有一个用prolog编写的过滤器,我想把它嵌入到我的web服务中。我在后端使用JAVA,我希望在这里添加过滤器。我使用tomcat作为我的应用程序服务器。有人能提出一个好办法吗。我知道JPL,可悲的是我无法让它工作 如果您想将Prolog引擎嵌入Java本身,总是存在一些问题。其他替代方案包括概念上类似的或更具编译性的 另一种选择,也许更遥远一点(这肯定会涉及到您的一点移植工作),就是使用这种语言——它有一种非常类似于Prolog的语法,但实际上不是Prolog——它的特性,除其他外,一个Ja

|有一个用prolog编写的过滤器,我想把它嵌入到我的web服务中。我在后端使用JAVA,我希望在这里添加过滤器。我使用tomcat作为我的应用程序服务器。有人能提出一个好办法吗。我知道JPL,可悲的是我无法让它工作

如果您想将Prolog引擎嵌入Java本身,总是存在一些问题。其他替代方案包括概念上类似的或更具编译性的


另一种选择,也许更遥远一点(这肯定会涉及到您的一点移植工作),就是使用这种语言——它有一种非常类似于Prolog的语法,但实际上不是Prolog——它的特性,除其他外,一个Java后端和相应的Java FFI。

您想要做什么现在还不清楚,所以我假设您只是想弄清楚如何启动Prolog代码并返回结果

如果是这样,Java提供了以下类:

ProcessBuilder.start()和 Runtime.exec方法创建本机 处理并返回 可以使用的进程的子类 控制过程并获得 关于它的信息。班级 过程提供了 执行来自流程的输入, 执行流程的输出, 等待过程完成, 正在检查服务器的退出状态 进程,并销毁(杀死) 过程

也许更直接有用的是:这允许您创建一个完整的工作环境(包括环境变量),该环境可以紧密模拟您现在可能正在测试的命令行。引用Javadoc:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();
ProcessBuilder pb=newprocessbuilder(“myCommand”、“myArg1”、“myArg2”);
Map env=pb.environment();
环境看跌期权(“VAR1”、“myValue”);
环境移除(“其他变量”);
环境put(“VAR2”,环境get(“VAR1”)+“后缀”);
目录(新文件(“myDir”);
进程p=pb.start();
请记住,如果要将信息传递给所创建的进程,则需要使用(这将是Prolog输入的输出)。同样,如果您想获得Prolog的输出和错误,则需要使用
Process.getInputStream()
Process.getErrorStream()


我过去混淆了这些输入和输出流,现在仍然希望我能回到我生命中的那些时间….

然后你的问题应该与JPL问题相关,确保你包含了你看到的错误