你也可以使用Py4J。首页上有一个例子和很多文档,但实际上,你只需要从你的python代码中调用Java方法,就像它们是python方法一样:from py4j.java_gateway import JavaGatewaygateway = 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
与Jython相反,Py4J的一部分在Python VM中运行,因此它始终与最新版本的Python“最新”,并且您可以使用在Jython上运行不正常的库(例如,lxml)。另一部分在要调用的Java VM中运行。
通过套接字而不是JNI完成通信,Py4J有自己的协议(优化某些情况,管理内存等)
免责声明:我是Py4J的作者