Py4j在服务器中运行应用程序时的异常

时间:2015-12-14 16:19:59

标签: java python py4j

我使用py4j创建了一个应用程序,可以使用java应用程序将数据从python保存到SQL数据库,当我将JVM作为应用程序运行时,一切都运行得很好,它实际上保存了数据。但是,当我在服务器中运行代码时,它给了我一个异常。之前我想也许我的服务器(Wildfly)和Py4j正在使用相同的端口,所以我改变了默认的py4j端口作为turotial建议,这是如何python方面看起来像修改后:

from py4j.java_gateway import JavaGateway, GatewayParameters
gateway = JavaGateway(GatewayParameters(port=25335))
testBD = gateway.entry_point
DBin = gateway.jvm.com.packtpub.wflydevelopment.ch.Application(10,3) #calling constructor 
testBD.create(DBin)

但我还有一个例外:

    Traceback (most recent call last):
File "C:\Users\user\Desktop\test.py", line 4, in 
DBin = gateway.jvm.com.packtpub.wflydevelopment.ch.Application(10,3) 
File "C:\Users\user\AppData\Local\Programs\Python\Python35-32\lib\site-packages\py4j-0.9-py3.5.egg\py4j\java_gateway.py", line 1185, in getattr
answer = self._gateway_client.send_command(
AttributeError: 'GatewayParameters' object has no attribute 'send_command'

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

我从https://github.com/bartdag/py4j/issues/180的问题得到了bartdag的答案,他指出将GatewayParameter实例指定为参数“gateway_parameters”它可以工作。

# This produces the error 
gateway = JavaGateway(GatewayParameters(address='192.168.99.100', port=25333))

但是添加参数名称可以使它工作:

# This solves it the error 
gateway = JavaGateway(gateway_parameters=GatewayParameters(address='192.168.99.100', port=25333))