2011-05-20 82 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()

我迷茫,在過去的輸入和輸出流,仍然希望我可以有我的生活回到那些個小時....