Py4j не может подключиться к серверу Java
Я пытался написать простую программу для установки соединения между python и java с использованием py4j. Я написал следующие две строки, надеясь, что все будет работать, так как я не делаю никаких изменений
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 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
РЕДАКТИРОВАТЬ
Я использовал тот же код Java, который использовался в учебнике по py4j
У меня есть файл с именем 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");
}
}
0 ответов
Я также столкнулся с чем-то таким же, как
py4j.java_gateway: при попытке подключения к серверу Java произошла ошибка
во время работы над оболочкой pyspark. Чтобы решить это в первую очередь, нам нужно запустить сервер Java 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();
}
}