【发布时间】:2013-06-12 21:46:30
【问题描述】:
在许多软件中,我们进行任何更改后,都必须重新启动软件才能使更改生效,有时还会有自动重新启动软件的选项。如何在 Java 中实现这一点?
这是我尝试过的:
int o = JOptionPane.showConfirmDialog(
frame,
"<html>The previously selected preferences have been changed.<br>Watch must restart for the changes to take effect.<br> Restart now?</html>",
"Restart now?", JOptionPane.YES_NO_OPTION);
if(o == JOptionPane.YES_OPTION) {
try {
Process p = new ProcessBuilder("java", "Watch").start();
} catch(IOException e) {
e.printStackTrace();
}
frame.dispose();
但是,这似乎不起作用。应用程序刚刚终止。我在这里想念什么?提前致谢!
【问题讨论】:
-
尝试绝对路径,而不是仅仅“观看”。
-
您的意思是添加 CLASSPATH?
-
尝试从命令行启动您的程序 -> 将其放入
ProcessBuilder。我曾经遇到过 ProcessBuilder 未加载诸如“PATH”之类的环境变量的问题,因此无法识别“java”。不过,有一种方法可以做到这一点。我不记得了…… -
这让我想起了一个老笑话“你已经移动了鼠标。需要重新启动 Windows 才能使更改生效。” - 严肃地说,虽然它可能更容易编码,但用户肯定不希望仅仅为了激活一些配置更改而必须重新启动。
-
@JavaNewbie_M107 Brian Roach 的答案是你想要的。在那里寻找最佳答案。