在Java代码运行时重新编译和重新运行的问题

3
在Unix环境下,如果我正在运行Java代码并且想要使用不同的参数重新运行它,那么我能否在不丢失数据的情况下重新编译它?之前的Java任务是否仍然可以在不卡住的情况下运行?
问候, Simone

你的问题有点令人困惑。我不确定你的意思。你能否展示一些代码吗? - Aidanc
1
在大多数环境中,如果您在应用程序运行时重新编译 Java .class 文件,则正在运行的应用程序不会受到影响 - 它将继续使用旧代码运行。但是,如果该应用程序尚未加载所有内容,则应用程序尚未引用的 .class 文件可能会意外被拾取,导致“异常”行为。 - Hot Licks
嗯,有HCR和类似的东西。 - Voo
@Aidanc 我没有设置命令行参数,因此我想要修改一些Java代码并重新编译它,但是我仍在运行另一个实例的该代码。我希望在启动新的Java实例时保持它继续运行。 - Simone
@HotLicks 谢谢。它已经运行了2天,我认为我加载了所有需要的东西。我将重新编译并运行它! - Simone
1个回答

3
您可以在不重新编译的情况下,使用不同(命令行)参数运行同一Java程序的多个实例。
在运行时运行同一程序的不同版本并重新编译是可能的,但如果您在程序运行时修改类文件,而该文件尚未加载,则可能会影响当前运行时。 如果您想要同时运行两个不同版本,应创建另一个类文件或jar文件的工作副本,然后在修改后启动该副本。 如果您的程序修改可以更改为属性文件或其他配置文件的修改,则我认为这是更好的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接