gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:02:13 24 4
gpt4 key购买 nike

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

Python (ui.py) -> Jython (linker.py) -> Java(在 jar 中编译)

要在 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

关于java - 如何在 Jython/Python 中保存 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com