Py4j 无法连接到 Java 服务器

2024-03-19

我试图编写一个简单的程序来使用 py4j 在 python 和 java 之间建立连接。我写了以下两行,希望一切都能运行,因为我没有进行任何更改

from py4j.java_gateway import JavaGateway, GatewayParameters
gateway = JavaGateway(gateway_parameters=GatewayParameters(port=25335))
random = gateway.jvm.java.util.Random()

这导致了以下错误

py4j.protocol.Py4JNetworkError:尝试连接到Java服务器时发生错误(127.0.0.1:25335)

我环顾四周,发现如果 java 正在侦听不同的端口,则可能会发生这种情况。所以我写了一个 for 块来看看会发生什么

for i in range(65535+1):
    try:
        gateway = JavaGateway(gateway_parameters=GatewayParameters(port=i))
        random = gateway.jvm.java.util.Random()
        print("passed port num", str(i))
    except:
        pass

上面的块没有产生任何结果。所有端口均无法连接。我不知道我哪里出了问题。

如何找到java端正在使用的端口号?

我正在使用 py4j 版本 0.10.7 和 python 3.6.0

EDIT

我使用了与中使用的相同的java代码py4j教程 https://www.py4j.org/getting_started.html

我有一个名为java_stack.java and py4j_gs.java。两者都在同一目录中。我从终端调用“java py4j_gs.java”。这是两个文件的内容

java_stack.java

package py4j.examples;    
import py4j.GatewayServer;
public class StackEntryPoint {
    private Stack stack;
    public StackEntryPoint() {
      stack = new Stack();
      stack.push("Initial Item");
    }
    public Stack getStack() {
        return stack;
    }
    public static void main(String[] args) {
        GatewayServer gatewayServer = new GatewayServer(new StackEntryPoint());
        gatewayServer.start();
        System.out.println("Gateway Server Started");
    }    
}

py4j_gs.java

package py4j.examples;
import py4j.GatewayServer;
public class StackEntryPoint {
    private Stack stack;
    public StackEntryPoint() {
      stack = new Stack();
      stack.push("Initial Item");
    }
    public Stack getStack() {
        return stack;
    }
    public static void main(String[] args) {
        GatewayServer gatewayServer = new GatewayServer(new StackEntryPoint());
        gatewayServer.start();
        System.out.println("Gateway Server Started");
    }
}

我也面临着同样的事情

py4j.java_gateway:尝试连接到Java服务器时发生错误

在 pyspark shell 上工作时。 为了解决这个问题,我们首先需要启动 java geteway 服务器。执行以下 java 代码后,我的问题得到解决。

import py4j.GatewayServer;

public class Test {

    public static void main(String[] args) {
        Test app = new Test ();
        // app is now the gateway.entry_point
        GatewayServer server = new GatewayServer(app);
        server.start();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Py4j 无法连接到 Java 服务器 的相关文章

随机推荐