繁体   English   中英

如何在Jython / Python中保存Java对象

[英]How to save a Java object in Jython/Python

我正在使用Tkinter构建Python UI。 为了满足程序的需要,我必须将Python与Java连接起来以做一些事情,因此我使用了一个简单的Jython脚本作为链接器。 我不能将Tkinter与Jython一起使用,因为它不受支持。

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

要在Python中调用Jython函数,我使用如下subprocess

ui.py:

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

然后,在Jython文件linker.py ,导入已经添加到JYTHONPATH上的Java类,并创建一个名称为m的对象,并调用Java类的某些函数。

linker.py:

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

事实是,我创建了一个m对象,它将在jython linker.py执行结束后销毁。 所以问题是:可以将那个m对象保存在某个地方,以便我可以随时从ui.py调用它吗? 如果不可能,还有其他方法可以做到吗?

提前致谢。

我终于通过使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM