/ / Como salvar um objeto Java em Jython / Python - java, python, python-2.7, jython

Como salvar um objeto Java em Jython / Python - java, python, python-2.7, jython

Eu estou construindo uma interface do usuário do Python usando o Tkinter. Para as necessidades do programa, eu tenho que conectar Python com Java para fazer algumas coisas, então eu estou usando um script Jython simples como um linker. Eu não posso usar o Tkinter com o Jython porque ele não é suportado.

Python (ui.py) -> Jython (linker.py) -> Java (compiled in jars)

Para chamar a função Jython em Python eu uso subprocess do seguinte modo:

ui.py:

cmd = "jython linker.py""
my_env = os.environ
my_env["JYTHONPATH"] = tons_of_jars
subprocess.Popen(cmd, shell=True, env=my_env)

Então, no arquivo Jython, linker.py, Eu importo as classes Java já adicionadas no JYTHONPATH e crio um objeto com o nome m e ligue para algumas funções da classe Java.

linker.py:

import handler.handler
m = handler.handler(foo, moo, bar)
m.schedule(moo)
m.getFullCalendar()
m.printgantt()

A coisa é que eu criei um m objeto, que será destruído após a execução do jython linker.py termina. Então a questão é: é possível salvar isso m objeto em algum lugar para que eu possa chamá-lo de ui.py Sempre que eu quiser? Se isso não for possível, existe alguma outra maneira de fazer isso?

Desde já, obrigado.

Respostas:

2 para resposta № 1

Eu finalmente resolvi usando ObjectOutputStream.

from java import io

def saveObject(x, fname="object.bin"):
outs = io.ObjectOutputStream(io.FileOutputStream(fname))
outs.writeObject(x)
outs.close()

def loadObject(fname="object.bin"):
ins = io.ObjectInputStream(io.FileInputStream(fname))
x=ins.readObject()
ins.close()
return x