簡體   English   中英

外部Java程序:處理SIGTERM

[英]External java program: Handle SIGTERM

我有一個在主機上運行的Java程序(帶有gui)。 在運行時,用戶可以添加一些數據記錄。 該程序只適用於他們。

稍后,系統可能會關閉,或者該程序剛剛被SIGTERM關閉。

不幸的是,如果用戶使用“ X”手動將其關閉,則該porgram似乎僅存儲數據記錄。

現在我有一個問題,如果程序被SIGTERM關閉,我可能會丟失一些數據。 不幸的是,沒有聯系電子郵件地址要求作者進行更改。

我試圖用似乎或多或少起作用的“ jd gui”反編譯它。 我以為那我可以添加信號處理程序並調用“窗口關閉”方法。

但是“ jd gui”創建了如下代碼:

/* 110:269 */       if ((??? = Thread.currentThread().getContextClassLoader()) != null) {
/* 111:270 */         return ???;

如果我嘗試編譯源代碼,我還會遇到許多其他錯誤。

我認為這是因為jar文件被某些工具混淆了。 不幸的是,反編譯后的代碼無法正常工作,而且我無法使用JFrame重新編譯文件。

長話短說:是否可以編寫一個僅處理SIGTERM的“包裝程序”,然后調用主框架(這是唯一的JFrame)的JFrame“關閉方法”(或如何調用)?

我只是不知道如何調用外部運行的Java程序的這種方法。

非常感謝你。

最好的問候凱文

嘗試對應用程序進行模糊處理。 在這里看看(2009)-用於反混淆Java代碼的工具

也許可以解析源代碼,以便您能夠更深入地挖掘源代碼並進行編譯。

否則,從包裝應用程序外部插入基於Swing的ui事件隊列非常復雜。

也許您可以反編譯主類,並用自己的主類替換其主方法,並添加一個shutdownhook請參見: Java中的shutdown鈎子的有用示例? 該方法調用onClose(反混淆)方法。

無論如何,這是一個有趣而充滿挑戰的問題!

使用main方法創建自己的類,該方法將安裝關閉鈎子以在關閉前進行保存。 然后調用原始程序的main方法。 將其添加到jar並使用此類啟動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM