Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java py4J的最简单示例_Java_Python_Py4j - Fatal编程技术网

Java py4J的最简单示例

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

我在Python中的
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-try
java-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;