0

Javaアプリケーションを使用してPythonからSQLデータベースにデータを保存できるようにするpy4jを使用してアプリケーションを作成しました。JVMをアプリケーションとして実行すると、実際にデータが保存されます。しかし、サーバーでコードを実行すると、例外が返されます。そのため、サーバー(Wildfly)とPy4jが同じポートを使用している可能性があると考えたため、デフォルトのpy4jポートを変更しました。変更後は次のようになります。

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'

どんな提案でも大歓迎です。

4

1 に答える 1

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))
于 2016-09-21T14:56:45.507 に答える