いくつかのディレクトリをクリーンアップしたり、ファイルをコピーしたりする機能をアプリケーションに実装したいのですreset
が、プロセスを完了するために再起動する必要があります。
アプリケーションを再実行する方法は? 実際の再起動ではありませんが、2 番目のインスタンスを開き、これを閉じるだけで十分だと思います。
私のアプリケーションのコアはクラス拡張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);
}