2011-05-20 80 views
1

|在prolog中有一个我想嵌入到我的web服务中的过滤器。我在后端使用JAVA,我希望在这里添加过滤器。我使用tomcat作为我的应用程序服务器。任何人都可以提出一个好方法。我知道JPL,可悲的是我无法使它工作。在java中的Prolog嵌入帮助

+0

那么你的问题应该进行相关的JPL问题,请确保您包括你看到的错误 – Jon 2011-05-20 12:59:55

回答

2

如果您想将Prolog引擎嵌入到Java本身中,总会有tuProlog。其他选择将包括概念相似的JLog或更多编译器Prolog Cafe

另一种选择,或许有点更远(它肯定会涉及您的部分有点移植工作的)是使用Mercury语言–它有一个非常Prolog的十岁上下的语法,但实际上不是序言–哪些功能其中包括Java后端和相称的Java FFI。

0

这并不是显而易见的,你要做的是什么,我要做出这样的假设,你真的只是想搞清楚如何启动你的Prolog代码并获得结果。

如果是这样的话,Java提供了Process类:

的ProcessBuilder.start()和 的Runtime.exec方法创建一个本地 过程和退货处理的 子能的一个实例使用 来控制该过程并获得关于它的信息 。类 方法提供了 方法从处理执行输入, 执行输出到过程, 等待的过程来完成, 检查 过程的退出状态,并破坏(杀死)的 过程。

或许更直接有用的是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.getOutputStream()(这将是你的输出到Prolog的输入)。同样,如果你想得到Prolog的输出和错误,你需要使用Process.getInputStream()Process.getErrorStream()

我迷茫,在过去的输入和输出流,仍然希望我可以有我的生活回到那些个小时....