首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用py4J的最简单示例

使用py4J的最简单示例
EN

Stack Overflow用户
提问于 2014-03-14 01:30:59
回答 1查看 11.4K关注 0票数 13

我使用pip在conda虚拟环境中使用Python语言安装了py4J。我写了一个非常简单的例子AdditionApplication.java来测试py4J,但是它不能编译。

javac AdditionApplication.java

失败,并报告未定义GatewayServer

我精通Python,但不幸的是,我不懂Java。我还需要提供什么?

代码语言:javascript
复制
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:

代码语言:javascript
复制
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;添加到文件的顶部后,我得到了一个不同的错误:

package py4j does not exist

更新2

pip install py4j<PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar下留下了一个jar文件。我使用以下命令将其添加到我的类路径:

代码语言:javascript
复制
javac -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication.java

,然后输出

AdditionApplication.class

我该如何运行它?

最终更新和解决方案:

在应用了前面的修复之后,我最终使用以下命令运行代码:

代码语言:javascript
复制
java -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication 

代码在后台运行。要对其进行测试:

代码语言:javascript
复制
>>> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-14 01:33:52

py4j包中导入GatewayServer,以便可以在应用程序中使用未限定的类

代码语言:javascript
复制
import py4j.GatewayServer;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22386399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档