从Python调用非本机Java代码

2024-04-20 09:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够调用已经在运行的javajar中包含的某些方法(可以保证它将运行)。我发现了类似Jython的东西,但这些东西似乎只能访问Java的本机类等。在


Tags: 方法jythonjava机类javajar
1条回答
网友
1楼 · 发布于 2024-04-20 09:07:30

看看这个:Calling Java from Python

您也可以使用Py4J。在frontpage上有一个示例和大量文档,但实际上,您只需从python代码调用Java方法,就好像它们是python方法一样:

from py4j.java_gateway import JavaGateway

gateway = JavaGateway() # connect to the JVM

java_object = gateway.jvm.mypackage.MyClass() # invoke constructor

other_object = java_object.doThat()

other_object.doThis(1,'abc')

gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method

与Jython相反,Py4J的一部分运行在Python虚拟机中,因此它始终是最新版本的Python,并且您可以使用在Jython上运行不好的库(例如lxml)。另一部分运行在您想要调用的javavm中。在

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

相关问题 更多 >