2012-04-09 139 views
3

在Unix環境中,如果我正在運行Java代碼,並且想用不同的參數重新運行它,我可以重新編譯它,而不會丟失數據?先前的Java任務是否仍能運行而不會卡住?重新編譯並在運行時重新運行Java代碼

乾杯, 西蒙

+0

你的問題有點混亂。我不確定你的意思。你能否展示一些代碼? – Aidanc 2012-04-09 02:02:45

+1

在大多數環境中,如果您在應用程序運行時重新編譯Java .class文件,則正在運行的應用程序不會受到影響 - 它將繼續使用舊代碼運行。但是,如果應用程序尚未加載所有應用程序,那麼應用程序尚未引用的.class文件可能會意外拾取,導致「異常」行爲。 – 2012-04-09 02:11:41

+0

那麼有[HCR](http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F)和類似的東西 – Voo 2012-04-09 02:12:55

回答

3

可以用不同的(命令行)運行multilpe相同的Java程序的情況下,無需重新編譯參數。

運行相同程序的不同版本並在運行時重新編譯是可能的,但是如果在程序運行時修改類文件,則可能會影響當前運行時,如果該文件尚未加載。 您應該創建類文件或jar文件的另一個工作副本,然後在修改後啓動副本,如果您想讓兩個不同版本同時運行。 如果您的程序修改可以更改爲屬性文件或其他配置文件mods,我認爲這是一個更好的解決方案。