从Java程序传递SWI Prolog查询
我的Java程序在Query变量中生成了一个查询。我想把这个发送给SWI Prolog,以得到这个问题的解决方案。下面显示了我用Java编写的与SWI Prolog通信的子代码从Java程序传递SWI Prolog查询,java,swi-prolog,Java,Swi Prolog,我的Java程序在Query变量中生成了一个查询。我想把这个发送给SWI Prolog,以得到这个问题的解决方案。下面显示了我用Java编写的与SWI Prolog通信的子代码 Process P= new ProcessBuilder("C:\\Program Files\\swipl\\bin\\swipl-win.exe").start(); BufferedReader processOutput = new BufferedReader(new InputStrea
Process P= new ProcessBuilder("C:\\Program Files\\swipl\\bin\\swipl-win.exe").start();
BufferedReader processOutput = new BufferedReader(new InputStreamReader(P.getInputStream()));
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(P.getOutputStream()));
String commandToSend = Query;
processInput.write(commandToSend);
但是SWI Prolog窗口会打开,但是我正在写入ProcessInput的COM文件没有发送到SWI Prolog。有人能给我建议最好的方法吗?我还需要SWI Prolog的查询执行输出文件。将查询保存到外部文本文件,并从命令行(设置了适当的选项)执行
swipl
,并将输出重定向到另一个文本文件。然后,读取输出文件
例如:
:-query.
swipl-s QUERY.TXT-g halt--quiet>OUTPUT.TXT
另外,我怀疑您应该结合使用
Runtime.getRuntime().exec(…)
和waitFor(…)
来等待swipl生成输出。使用ProcessBuilder
似乎是一种连接Java和Prolog的麻烦方法。您是否考虑过使用不同的API?我发现JPL可以用作Java和SWI Prolog的接口。但即使是这样,信息也不够丰富。。。