6

すでに実行されているJavajarに含まれている特定のメソッドなどを呼び出せるようにしたい(実行されることが保証されている)。Jythonのようなものを見つけましたが、それらはJavaのネイティブクラスなどにしかアクセスできないようです。

4

1 に答える 1

3

これをチェックしてください:PythonからJavaを呼び出す

Py4Jを使用することもできます。フロントページと多くのドキュメントに例がありますが、基本的には、PythonメソッドであるかのようにPythonコードからJavaメソッドを呼び出すだけです。

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など)を使用できます。他の部分は、呼び出したいJavaVMで実行されます。

通信はJNIではなくソケットを介して行われ、Py4Jには独自のプロトコルがあります(特定のケースを最適化するため、メモリを管理するためなど)

于 2012-06-16T16:47:32.547 に答える