2024-04-20 09:07:30 发布
网友
我希望能够调用已经在运行的javajar中包含的某些方法(可以保证它将运行)。我发现了类似Jython的东西,但这些东西似乎只能访问Java的本机类等。在
看看这个:Calling Java from Python
“您也可以使用Py4J。在frontpage上有一个示例和大量文档,但实际上,您只需从python代码调用Java方法,就好像它们是python方法一样:
from py4j.java_gateway import JavaGateway
gateway = JavaGateway() # connect to the JVMjava_object = gateway.jvm.mypackage.MyClass() # invoke constructorother_object = java_object.doThat()other_object.doThis(1,'abc')gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method
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有自己的协议(优化某些情况,管理内存等)。“
看看这个:Calling Java from Python
“您也可以使用Py4J。在frontpage上有一个示例和大量文档,但实际上,您只需从python代码调用Java方法,就好像它们是python方法一样:
与Jython相反,Py4J的一部分运行在Python虚拟机中,因此它始终是最新版本的Python,并且您可以使用在Jython上运行不好的库(例如lxml)。另一部分运行在您想要调用的javavm中。在
通信通过套接字而不是JNI来完成,Py4J有自己的协议(优化某些情况,管理内存等)。“
相关问题 更多 >
编程相关推荐