簡體   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