【问题标题】:Call non-native Java code from Python从 Python 调用非本地 Java 代码
【发布时间】:2012-06-16 16:41:49
【问题描述】:

我希望能够调用已在运行的 Java jar 中包含的某些方法等(保证它将运行)。我找到了 Jython 之类的东西,但它们似乎只能访问 Java 的本机类等。

【问题讨论】:

  • 您如何期望能够做到这一点,例如爪哇?

标签: java python cgi


【解决方案1】:

看看这个:Calling Java from Python

"您也可以使用 Py4J。首页上有一个示例和大量文档,但本质上,您只需从 Python 代码中调用 Java 方法,就好像它们是 Python 方法一样:

from py4j.java_gateway import JavaGateway

gateway = JavaGateway() # 连接JVM

java_object = gateway.jvm.mypackage.MyClass() # 调用构造函数

other_object = java_object.doThat()

other_object.doThis(1,'abc')

gateway.jvm.java.lang.System.out.println('Hello World!') # 调用静态方法

与 Jython 不同,Py4J 的一部分在 Python VM 中运行,因此它始终与最新版本的 Python “保持同步”,您可以使用在 Jython 上运行不佳的库(例如 lxml)。另一部分运行在您要调用的 Java VM 中。

通信是通过套接字而不是 JNI 完成的,Py4J 有自己的协议(优化某些情况,管理内存等)"

【讨论】:

  • 来自 Py4J 网站:“请注意,Java 程序必须在执行上面的 Python 代码之前启动。换句话说,Py4J 不会启动 JVM。” ---- 访问他们的网站:py4j.sourceforge.net/index.html
猜你喜欢
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多