在 Tomcat 项目中从 Java 执行 Python 脚本

Posted

技术标签:

【中文标题】在 Tomcat 项目中从 Java 执行 Python 脚本【英文标题】:Executing Python script from Java in Tomcat project 【发布时间】:2011-06-30 06:12:13 【问题描述】:

我想从 Java 执行一个 Python 脚本(包括 Scipy 和 Numpy),它应该通过 eclipse 与 tomcat 项目捆绑在一起。从 Java 调用 Python 很简单:

Runtime.getRuntime().exec("python ...");

如何实现绑定脚本在对应路径调用?这甚至可能吗?

【问题讨论】:

【参考方案1】:

你提到了 tomcat,所以我猜你的项目是在一个 jar 文件中。该文件可能无法作为文件提供给系统,而只是捆绑在您的 jar 中,因此 python 解释器无法访问它。您可以将内容作为 InputStream 获取。你可以在这里找到一个例子:

How to get path of executed jar file

之后,您可以将其写入临时文件并在您的exec-call 中使用该文件。

【讨论】:

实际上我想在分发到服务器时从 Eclipse 和“战争”文件中执行它。如何在 Eclipse 中捆绑它?【参考方案2】:

我最近做了一些类似的事情,我可以从 eclipse 中运行它。

我用过jython和plyjy

我将两个 jars(jython.jar 和 plyjy.jar)保存在 Eclipse 项目的 lib 文件夹中,并将所需的 python 文件复制到项目的 src 文件夹中。

然后使用以下代码创建了一个 Python 对象实例

PySystemObjectFactory factory = new PySystemObjectFactory(InterfaceTye, moduleName,ClassName);

借助工厂对象,我们可以创建指定模块的对象并调用该特定模块的方法。

我只能在 eciplse 中实现它,但我不确定如何为构建捆绑相同的内容

【讨论】:

如果您不需要 NUMPY 或 SCIPY,这是一个很好的 jython 和 plyjy 解决方案。这是我想与 Python 交互的主要原因。 jython 不支持这两个包。

以上是关于在 Tomcat 项目中从 Java 执行 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 Tomcat 中从哪里可以看到 Servlet 的“控制台输出”?

如何在eclipse中从另一个java项目中读取项目的属性文件

怎么在tomcat启动时自动执行一个java类 获得本项目服务器的IP和端口

我可以使用 XAMPP 的 apache tomcat 来执行 java 动态 Web 项目吗?

如何在 Maven 项目中从 C 运行 java 类文件

在 Eclipse 中从 XML 生成 Java 代码