2010-06-09 114 views
5

有沒有一種方法來重建在Java程序中傳遞給Java的命令行參數,包括JVM選項和類路徑選項?我有一個Java程序,需要重新啓動JVM並操縱它的bootclasspath(即試圖覆蓋某些系統類)。我使用libcsystem方法來調用新的JVM。重建java命令行參數

我打開更好的方法,但Java代理不是一個選項。

+0

我真的很好奇你在這裏試圖做什麼...... – alex 2010-06-09 19:18:58

+0

是否有'ps -xxx'? – trashgod 2010-06-09 19:53:24

+0

@trashgod,它不可用於重用 – notnoop 2010-06-10 02:50:33

回答

1

爲什麼不使用具有這些屬性的文件,就像Eclipse ini文件和NetBeans conf文件一樣。這樣你就可以閱讀這些屬性並用這些屬性產生新的Java進程。

回到你的問題,這以前answer應該做

+0

謝謝! 'RuntimeMZBean.getInputArguments()'很好地解決了這個問題。 – notnoop 2010-06-09 20:28:59

-1

Err ...修改整個核心Java類運行時是一個非常非常糟糕的主意。

子類化在這裏有什麼問題?你想修改一個外部庫,添加功能還是懶惰?

+0

爲什麼downvote? – TheLQ 2010-06-11 15:25:18

+0

歡迎來到互聯網,朋友。 – 2015-11-01 01:06:52

0

我同意使用bootclasspath把玩通常是一個貧窮的想法。但是...

獲取「java.c」的代碼 - 編譯爲java.exe的C程序。你會發現它只是使用JNI Invocation API來構造一個JVM並調用主方法。您可以修改並重新編譯此代碼以查找特定的退出代碼等,並在需要時循環並重新啓動JVM。另外,Eclipse可以做到這一點(或者至少用於),但是有一個Java程序構造命令行(來自道具文件等)並啓動一個子進程。同樣,它鉤住子流程退出代碼並用它來決定是否重新啓動新的子流程。