Re: [問題] call另一個Class的main利用exec()

看板java作者 (CrazyBoss)時間13年前 (2012/11/17 22:34), 編輯推噓5(506)
留言11則, 7人參與, 最新討論串1/1
※ 引述《CrazyBoss (CrazyBoss)》之銘言: : 標題: [問題] call另一個Class的main,原程式就結束? : 時間: Sat Nov 17 18:30:52 2012 : : 我要執行的主程式: : : package ManyMain; : : import XXX.jar檔; : : public class ManyMain { : : public static void main(String[] args) { : XXX.main("1"); : XXX.main("2"); : XXX.main("3"); : } : } : : ------------------------------------------------------------- 分享一下解法好了 首先我覺得GW_MsgSender.jar應該是有System.exit()這行 導致call一次GW_MsgSender.main()就會結束所有程式 我在網路上找到這個網頁 http://ppt.cc/9UGy 解決辦法就是利用網頁上說的在runtime時call別的程式 import java.io.File; import java.io.IOException; import XXX.jar檔 public class ManyMain { static File f1 = new File(".jar檔的位置"); static String[] envp = {"Java的bin資料夾位置"}; public static void main(String[] args) throws IOException, InterruptedException { Runtime rt = Runtime.getRuntime(); Process p1 = null; Process p2 = null; Process p3 = null; p1 = rt.exec("java -jar XXX.jar檔 參數0 參數1 參數2", envp, f1); p1.waitFor(); p2 = rt.exec("java -jar XXX.jar檔 參數0 參數1 參數2", envp, f1); p2.waitFor(); p3 = rt.exec("java -jar XXX.jar檔 參數0 參數1 參數2", envp, f1); p3.waitFor(); } } ------------------------------------------------------------- 簡單來說就是像在cmd裡執行java -jar XXX.jar檔 參數0 參數1 參數2 最後謝謝lachtchlee給的建議XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.82.219 ※ 編輯: CrazyBoss 來自: 140.116.82.219 (11/17 22:36) ※ 編輯: CrazyBoss 來自: 140.116.82.219 (11/17 22:39)

11/17 22:43, , 1F
真的是用開另外一個jvm給他的方式 XD
11/17 22:43, 1F

11/17 22:50, , 2F
用 JD-GUI 或 Bytecode Editor decompile >///<
11/17 22:50, 2F

11/17 22:58, , 3F
對就是在開jvm,不過好像沒什麼人討論QQ"
11/17 22:58, 3F
※ 編輯: CrazyBoss 來自: 140.116.82.219 (11/17 23:13)

11/18 09:06, , 4F
exec 不是什麼神奇招式,之前常常有人問
11/18 09:06, 4F

11/18 09:07, , 5F
反過來說,有 System.exit() 的 lib/app 真的要這樣用嗎
11/18 09:07, 5F

11/18 09:54, , 6F
剛入門的時候有把System.exit() 寫在jsp裡呢....
11/18 09:54, 6F

11/18 11:38, , 7F
orz.... 那會把整個系統停掉吧....
11/18 11:38, 7F

11/18 14:04, , 8F
我改一下標題讓人好搜尋
11/18 14:04, 8F

11/18 18:10, , 9F
可以考慮使用 bytecode engineering(含AOP) 方式把
11/18 18:10, 9F

11/18 18:11, , 10F
System.exit call 移除或抑制掉。
11/18 18:11, 10F

11/18 22:41, , 11F
SecurityManager 也可以阻擋 System.exit
11/18 22:41, 11F
文章代碼(AID): #1Gfw1UIt (java)