Prolog嵌入java帮助

时间:2011-05-20 12:56:25

标签: java prolog

|有一个用prolog编写的过滤器,我想嵌入我的网络服务。我在后端使用JAVA,我希望在这里添加过滤器。我使用tomcat作为我的应用服务器。任何人都可以建议一个好方法。我知道JPL,可悲的是我无法让它工作。

2 个答案:

答案 0 :(得分:2)

如果您想将Prolog引擎嵌入Java本身,总会有tuProlog。其他替代方案包括类似概念JLog或更多编译Prolog Cafe

另一个替代方案,也许更远一点(它肯定会涉及到你的一些移植工作)是使用Mercury语言 - 它有一个非常Prolog-ish语法,但实际上并不是Prolog - 其中包括Java后端和相应的Java FFI。

答案 1 :(得分:0)

你想要做的事情并不是很明显,所以我会假设你真的只是想弄清楚如何启动你的Prolog代码并得到结果。

如果是这种情况,Java提供Process类:

  

ProcessBuilder.start()和   Runtime.exec方法创建本机   处理并返回一个实例   可以使用的Process的子类   控制过程并获得   有关它的信息。班级   流程提供方法   执行来自流程的输入,   执行输出到进程,   等待过程完成,   检查的退出状态   过程,并摧毁(杀死)   过程

可能更直接有用的是ProcessBuilder:这允许您创建一个完整的工作环境(包括环境变量),它们可以模拟您现在可能正在测试的命令行。引自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();

请记住,如果要将信息传递给您创建的Process,则需要使用Process.getOutputStream()(这将是Prolog输入的输出)。同样,如果您想获得Prolog的输出和错误,则需要使用Process.getInputStream()Process.getErrorStream()

我过去曾混淆那些输入和输出流,但仍然希望我可以回到生命中的那些时间......