How to call java from python using PY4J

不羁的心 提交于 2019-12-04 11:20:18
package test.test;

import py4j.GatewayServer;

public class AdditionApplication {
    public int addition(int first, int second) {
        return first + second;
      }

      public static void main(String[] args) {
        AdditionApplication app = new AdditionApplication();
        // app is now the gateway.entry_point
        GatewayServer server = new GatewayServer(app);
        server.start();
      }
}

create a new class and run it(import py4j0.8.jar at 'py4j-0.8\py4j-0.8\py4j-java' first),then run python program

Minimal working example:

//AdditionApplication.java
import py4j.GatewayServer;

public class AdditionApplication {

  public static void main(String[] args) {
    AdditionApplication app = new AdditionApplication();
    // app is now the gateway.entry_point
    GatewayServer server = new GatewayServer(app);
    server.start();
  }
}

Compile (make sure that the -cp path to the py4j is valid, otherwise adjust it such that it points to the right place):

javac -cp /usr/local/share/py4j/py4j0.9.jar AdditionApplication.java

Run it:

java -cp .:/usr/local/share/py4j/py4j0.9.jar AdditionApplication

Now, if you run your python script, in the terminal where the java AdditionApplication is running you should see something like:

>>> Hello World!

You should first start the java program, and then invoke java method from python.

py4j doesn't start jvm, it just connects to the already started java process.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!