2012-04-09 164 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,我认为这是一个更好的解决方案。