在 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和端口