Java py4J的最简单示例
我在Python中的Java py4J的最简单示例,java,python,py4j,Java,Python,Py4j,我在Python中的conda虚拟环境中使用pip安装了py4J。我编写了一个超级简单的示例AdditionApplication.java来测试py4J,但它无法编译,即 javac AdditionApplication.java 未能抱怨未定义网关服务器GatewayServer 我精通Python,但不幸的是,我不懂Java。我还需要提供什么 public class AdditionApplication { public int addition(int first, int
conda
虚拟环境中使用pip安装了py4J
。我编写了一个超级简单的示例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();
}
}
如果有必要,我安装了以下版本的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)
更新1
添加后:import py4j.GatewayServer代码>在文件的顶部,我得到了一个不同的错误:
包py4j不存在
更新2
pip安装py4j
在/share/py4j/py4j0.8.1.jar
下留下一个jar
文件。我已通过以下方式将其添加到我的类路径:
javac -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication.java
代码在后台运行。要测试它,请执行以下操作:
>>> 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
从py4j
包导入GatewayServer
,以便在应用程序中使用不合格的类
import py4j.GatewayServer;
谢谢-我现在得到的错误是包py4j不存在
,但是我使用Python中的pip install py4j
安装了py4j。您需要在编译类路径中包含py4j0.x.jar
jar文件,例如javac-cp/usr/share/py4j/py4j0.x.jar:。AdditionApplication.java
谢谢!该命令现在编译为AdditionApplication.class
。我认为为了从Python中使用它,它必须运行,因为从技术上讲它是一个服务器。如何运行它?从未使用过p4jtbh-tryjava-cp/usr/share/py4j/py4j0.x.jar:。AdditionApplication
谢谢@Reimeus-当我运行javac…
而不使用.class
后缀时,我得到:错误:类名,“AdditionApplication”仅在显式请求注释处理时才被接受
我不明白。我完全按照您在这里所做的做了,但是当我运行:java-cp py4j0.10.8.1.jar AdditionApplication时,我收到以下错误:“错误:无法找到或加载主类AdditionApplication”。有什么想法吗?对于Mac/LInux:java-cp/usr/local/share/py4j/py4j0.10.5.jar:。附加应用程序 对于Windows:java-cp/usr/local/share/py4j/py4j0.10.5.jar AdditionApplication
import py4j.GatewayServer;