如何使用PY4J从python中调用java

hmi*_*tcs 4 python java py4j

我想用Py4J库从python中调用java,

from py4j.java_gateway import JavaGateway
gateway = JavaGateway()                        # connect to the JVM
gateway.jvm.java.lang.System.out.println('Hello World!')
Run Code Online (Sandbox Code Playgroud)

我有以下错误:"Py4JNetworkError:尝试连接到Java服务器时出错".似乎没有JVM在运行,如何解决?

And*_*jak 5

最小的工作示例:

//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();
  }
}
Run Code Online (Sandbox Code Playgroud)

编译(确保-cppy4j 的路径有效,否则调整它使其指向正确的位置):

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

运行:

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

现在,如果你运行你的python脚本,在运行java AdditionApplication的终端中你应该看到类似的东西:

>>> Hello World!

  • 取决于您使用的平台。在 UNIX 上为“:”,在 Windows 上为“;”。有关该主题的更多信息可以在[此处](http://stackoverflow.com/questions/29623328/why-is-file-pathseparatorchar-a-semicolon-on-windows)找到。 (2认同)

小智 2

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();
      }
}
Run Code Online (Sandbox Code Playgroud)

创建一个新类并运行它(首先在'py4j-0.8\py4j-0.8\py4j-java'导入py4j0.8.jar),然后运行python程序