首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PY4J回调服务器错误

PY4J回调服务器错误
EN

Stack Overflow用户
提问于 2014-09-28 11:01:47
回答 2查看 1.4K关注 0票数 2

我试图在PY4J网站这里中运行回调服务器的示例

但我得到了以下异常:"py4j.protocol.Py4JNetworkError:试图启动回调服务器时发生了错误“

这是代码:

爪哇:

代码语言:javascript
复制
package py4j.examples;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import py4j.GatewayServer;

public class OperatorExample {

    // To prevent integer overflow
    private final static int MAX = 1000;

    public List<Integer> randomBinaryOperator(Operator op) {
            Random random = new Random();
            List<Integer> numbers = new ArrayList<Integer>();
            numbers.add(random.nextInt(MAX));
            numbers.add(random.nextInt(MAX));
            numbers.add(op.doOperation(numbers.get(0), numbers.get(1)));
            return numbers;
    }

    public List<Integer> randomTernaryOperator(Operator op) {
            Random random = new Random();
            List<Integer> numbers = new ArrayList<Integer>();
            numbers.add(random.nextInt(MAX));
            numbers.add(random.nextInt(MAX));
            numbers.add(random.nextInt(MAX));
            numbers.add(op.doOperation(numbers.get(0), numbers.get(1), numbers.get(2)));
            return numbers;
    }

    public static void main(String[] args) {
            GatewayServer server = new GatewayServer(new OperatorExample());
            server.start();
    }

}

接口:

代码语言:javascript
复制
package py4j.examples;

public interface Operator {

    public int doOperation(int i, int j);

    public int doOperation(int i, int j, int k);

}

Python:

代码语言:javascript
复制
from py4j.java_gateway import JavaGateway

class Addition(object):
    def doOperation(self, i, j, k = None):
        if k == None:
             return i + j
        else:
             return i + j + k

    class Java:
        implements = ['py4j.examples.Operator']

if __name__ == '__main__':
    gateway = JavaGateway(start_callback_server=True)
    operator = Addition()
    numbers = gateway.entry_point.randomBinaryOperator(operator)
    print(numbers)
    numbers = gateway.entry_point.randomTernaryOperator(operator)
    print(numbers)
    gateway.shutdown()

就像我说过的,我得到了这个例外

py4j.protocol.Py4JNetworkError:在试图启动回调服务器.时出错。

这是堆栈跟踪:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/amir/Python code/callback_example.py", line 14, in <module>
    gateway = JavaGateway(start_callback_server=True)
  File "/usr/local/lib/python2.7/dist-packages/py4j-0.8.2.1-py2.7.egg/py4j/java_gateway.py", line 851, in __init__
    self._start_callback_server(python_proxy_port)
  File "/usr/local/lib/python2.7/dist-packages/py4j-0.8.2.1-py2.7.egg/py4j/java_gateway.py", line 867, in _start_callback_server
    self._callback_server.start()
  File "/usr/local/lib/python2.7/dist-packages/py4j-0.8.2.1-py2.7.egg/py4j/java_gateway.py", line 1091, in start
    raise Py4JNetworkError(msg)
py4j.protocol.Py4JNetworkError: An error occurred while trying to start the callback server
[Finished in 0.5s with exit code 1]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-29 09:32:12

我发现问题出在哪里了。

当我使用崇高文本运行Python脚本时,当构建完成时,使用端口的进程(在本例中是25334)仍然在运行,所以当我再次尝试运行该脚本时,端口正在使用。

不管怎样,谢谢你。

票数 2
EN

Stack Overflow用户

发布于 2022-07-20 09:01:12

对于我来说,当我在交互模式(code.interact(local=locals()))中打开一个运行脚本的窗口时,我得到了这个错误,忘记了这个错误,并尝试在一个单独的命令窗口中再次运行这个脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26084212

复制
相关文章

相似问题

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