2015-11-26 65 views
0

我在這裏看到回答說如果你想從java調用python腳本,你可以使用jython作爲選項。你需要jython從java調用python腳本嗎?

但看到其他的答案也說,你可以使用ProcessProcessBuilder並調用它們execstart方法來運行Python腳本。

據我所知,jython允許你在你的java代碼中編寫python,但它允許你通過調用python腳本,PythonInterpreter.execfile

所以我很想知道如果我想從我的java代碼中調用一個python腳本(例如使用nltk的文本處理腳本),並附帶一些參數並將結果返回給我的java程序,我有什麼選擇?我應該使用哪個選項?

回答

0

Jython是針對Java平臺 (source)

您可以簡單地使用ProcessBuilder如果已安裝常規的Python的機器上一個普通的Python腳本Python語言的實現。這使您不必在java應用程序中包含整個python運行時。您可以很容易地傳遞參數,返回的文本有點棘手:請參閱http://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/或其他示例。基本上python程序打印的任何東西都可以這樣捕獲。

但是,如果您不喜歡外部依賴關係,並且希望在單個應用程序中運輸所有內容,則可以嘗試使用jython。它有一些限制,因爲它沒有包含所有這些模塊,並且它似乎可能在C模塊中有困難。 Getting Python's nltk.wordnet module working for Jython看起來像是如何讓nltk與它一起運行的解釋。 jython的參數和返回值應該更簡單,因爲集成更好。如果您不僅僅需要打印文本,Jython甚至可以直接從python調用java代碼。這會爲您提供混合代碼的有趣選項。