2015-11-26 73 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代码。这会为您提供混合代码的有趣选项。