簡體   English   中英

從Java程序傳遞SWI-Prolog查詢

[英]Passing SWI-Prolog Query from Java Program

我在查詢變量中有一個由Java程序生成的查詢。 我想將其發送到SWI-Prolog以獲得解決方案。 下面顯示了我用Java編寫的用於與SWI-Prolog通信的子代碼。

  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的命令沒有發送到SWI-Prolog。 可以向我建議最好的方法嗎? 我還需要文件中SWI-Prolog的查詢執行的輸出。

將查詢保存到外部文本文件, swipl從命令行(已設置適當的選項)執行swipl ,然后將輸出重定向到另一個文本文件。 然后,讀取該輸出文件。

例:

  1. 將您的查詢另存為QUERY.TXT :- query.
  2. 運行swipl並重定向到OUTPUT.TXT: swipl -s QUERY.TXT -g halt --quiet > OUTPUT.TXT
  3. 讀取OUTPUT.TXT的內容

另外,我懷疑您應該結合使用Runtime.getRuntime().exec(...)waitFor(...)來等待swipl生成輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM