当前位置: 首页 > 面试题库 >

从Python调用Java

令狐凌
2023-03-14
问题内容

从python调用Java的最佳方法是什么?(对我来说,jython和RPC不是一个选择)。

我听说过JCC:http : //pypi.python.org/pypi/JCC/1.9 一个用于从C / Python调用Java的C 代码生成器,但这需要编译所有可能的调用。我希望有另一个解决方案。

我听说过JPype:http ://jpype.sourceforge.net/ 教程:http://www.slideshare.net/onyame/mixing-python-and-java

import jpype 
jpype.startJVM(path to jvm.dll, "-ea") 
javaPackage = jpype.JPackage("JavaPackageName") 
javaClass = javaPackage.JavaClassName 
javaObject = javaClass() 
javaObject.JavaMethodName() 
jpype.shutdownJVM() 

这看起来像我需要的。但是,最新版本是2009年1月,我看到人们无法编译JPype。


问题答案:

这是我对这个问题的总结:从Python调用Java的5种方法

http://baojie.org/blog/2014/06/16/call-java-from-python/(已缓存)

简短答案:Jpype运作良好,并且在许多项目(例如python-boilerpipe)中得到了证明,但是Pyjnius比JPype更快,更简单

我已经尝试过Pyjnius / Jnius,JCC,javabridge,Jpype和Py4j。

Py4j有点难以使用,因为您需要启动网关,从而增加了另一层脆弱性。



 类似资料:
  • 我需要从Java中调用一些Python代码。 我知道Jython存在,或者Java有自己的Python解释器。 问题是,所说的Python代码使用一些本机(C)编译代码,甚至在GPU上运行一些东西。 所以我可以把它分为两个问题: < Li > Jython或Java的Python解释器支持这个吗?也就是说,Python代码(当从Java调用时)将与所有的C和GPU部分一起运行,因此运行速度将与它独

  • 问题内容: 我有一个编译的Python库和API文档,我想从Ruby使用。 是否可以加载Python库,实例化其中定义的类并从Ruby对该对象调用方法? 问题答案: 本文提供了一些从Python运行Ruby代码的技术,这些技术也应适用于相反的方向(例如XML- RPC或管道),以及从Ruby运行Python代码的特定技术。特别是rubypython或Ruby / Python 看起来像他们可以做您

  • 问题内容: 我有一个python脚本,经过一番计算后,它将生成两个格式为gnuplot输入的数据文件。 如何从python’调用’gnuplot? 我想将以下python字符串作为输入发送到gnuplot: 其中“ EOUT ”和“ NOUT ”是两个文件名。 PS:我 宁愿 不使用额外的Python模块,只有标准的API(例如gnuplot的-PY)。 谢谢 问题答案: 一种简单的方法可能是只编

  • 问题内容: 我正在开发Python / ObjC应用程序,需要从ObjC的Python类中调用一些方法。我已经尝试了几种方法,但都没有成功。 如何从Objective-C调用Python方法? 我的Python类正在Interface Builder中实例化。如何从该实例调用方法? 问题答案: 使用PyObjC。 它包含在Leopard及更高版本中。 它甚至可以与iPython一起使用: ` 要从

  • 问题内容: 构建与C或C ++库的Python绑定的最快方法是什么? (如果这很重要,我正在使用Windows。) 问题答案: Boost Python库是用于连接Python和C 的框架。它使您可以快速而无缝地将C 类的函数和对象暴露给Python,反之亦然,而无需使用特殊工具-仅使用C 编译器即可。它被设计为以非介入方式包装C 接口,因此您不必为了包装而完全更改C ++代码,从而使Boost.

  • 问题内容: 我目前正在努力从python脚本调用非python程序。 我有一个〜1000个文件,当通过此C ++程序传递时,将生成〜1000个输出。每个输出文件必须具有唯一的名称。 我希望运行的命令具有以下形式: 到目前为止,我已经尝试过: 因此,我有一个必要文件的数组。我的问题-如何遍历数组并为每个条目将其作为参数传递给上述命令(program_name),并为每个文件指定唯一的输出ID? 问题