py4J最简单的例子

Ame*_*ina 10 python java py4j

我在Python中py4J使用pip在我的conda虚拟环境中安装.我写了一个超级简单的例子AdditionApplication.java来测试py4J,但它无法编译,即

javac AdditionApplication.java

没有抱怨 GatewayServer没有定义.

我对Python很了解,但遗憾的是不是Java.我还需要提供什么?

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)

如果重要,我安装了以下版本的Java:

java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

更新1

我添加:import py4j.GatewayServer;到文件的顶部后,我得到一个不同的错误:

package py4j does not exist

更新2

pip install py4j留下了一个jar文件<PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar.我已将它添加到我的类路径中:

javac -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication.java
Run Code Online (Sandbox Code Playgroud)

它输出

AdditionApplication.class

我该怎么运行它?

最终更新和解决方案:

应用以前的修复程序后,我最终运行代码:

java -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication 
Run Code Online (Sandbox Code Playgroud)

代码在后台运行.测试它:

>>> from py4j.java_gateway import JavaGateway
>>> gateway = JavaGateway()                   # connect to the JVM
>>> random = gateway.jvm.java.util.Random()   # create a java.util.Random instance
>>> number1 = random.nextInt(10)              # call the Random.nextInt method
>>> number2 = random.nextInt(10)
>>> print(number1,number2)
(2, 7)
>>> addition_app = gateway.entry_point        # get the AdditionApplication instance
>>> addition_app.addition(number1,number2)    # call the addition method
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 5

GatewayServerpy4j包导入,以便可以在应用程序中使用非限定类

import py4j.GatewayServer;
Run Code Online (Sandbox Code Playgroud)

  • 你需要在编译类路径中包含`py4j0.x.jar` JAR文件,例如`javac -cp /usr/share/py4j/py4j0.x.jar:.AdditionApplication.java` (3认同)