我试图编写一个简单的程序来使用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和python3.6.0
编辑
我使用了与py4j教程相同的java代码。
我有一个名为java_stack.java和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");
}
}发布于 2019-03-05 06:04:22
我也面临着同样的问题
试图连接到Java服务器时发生了py4j.java_gateway:An错误
在研究火花放电壳的时候。为了首先解决这个问题,我们需要启动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();
}
}https://stackoverflow.com/questions/53759351
复制相似问题