【发布时间】:2018-10-13 05:44:10
【问题描述】:
我想在我的应用程序中实现reset 功能,它会清理一些目录、复制文件等,然后为了完成该过程,我需要重新启动它。
如何让应用程序自行重新运行?我认为打开第二个实例并关闭这个就足够了,尽管它不是真正的重启。
我的应用程序的核心是类扩展JFrame,但是有很多静态块在程序执行时读取类的扩展。我需要以编程方式重新启动我的应用程序,以便再次创建/执行所有静态集合和块。
就这样开始了。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Window().createGUI();
}
});
这似乎工作正常:
public void restart() {
/* dispose();
Window.main(null);*/
StringBuilder cmd = new StringBuilder();
cmd.append(System.getProperty("java.home") + File.separator + "bin" + File.separator + "java ");
for (String jvmArg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
cmd.append(jvmArg + " ");
}
cmd.append("-cp ").append(ManagementFactory.getRuntimeMXBean().getClassPath()).append(" ");
cmd.append(Window.class.getName()).append(" ");
try {
Runtime.getRuntime().exec(cmd.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
【问题讨论】:
-
@DNA 之前尝试过对我不起作用。
-
非常不完整,我担心你的问题是。为我们考虑澄清它。非常好。是的,嗯。 GUI,是吗?摇摆,是吗?
-
@Brandon:我认为你的力量很强。他专注于他的代码解决方案,可能会错过更好的整体问题解决方案。