Я пытался написать простую программу для установки соединения между 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: AnПроизошла ошибка при попытке подключиться к серверу 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
У меня есть файл с именами 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");
}
}