Reinicie o aplicativo Swing
Estou disposto a adicionar um botão no meu aplicativo que, ao clicar, reiniciará o aplicativo. Pesquisei no Google, mas não encontrei nada útil, excetoest. Mas o procedimento a seguir aqui está violando o conceito WORA de Java.
Existe alguma outra maneira centralizada de Java para alcançar esse recurso? É possível apenas bifurcar outra cópia e sair?
Desde já, obrigado. Eu aprecio sua ajuda
@ deporter Tentei sua solução, mas ela não está funcionando:
@ mKorbel Eu escrevi o código a seguir, adotando o conceito que você havia mostrado emassi
JMenuItem jMenuItem = new JMenuItem("JYM");
jMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(true);
ScheduledFuture<?> future = executor.schedule(new Runnable() {
@Override
public void run() {
try {
Process p = Runtime.getRuntime().exec("cmd /c start java -jar D:\\MovieLibrary.jar");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}, 2, TimeUnit.SECONDS);
executor.shutdown();
try {
executor.awaitTermination(10, TimeUnit.SECONDS);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.exit(0);
}
});
E também
ScheduledExecutorService schedulerExecutor = Executors.newScheduledThreadPool(2);
Callable<Process> callable = new Callable<Process>() {
@Override
public Process call() throws Exception {
Process p = Runtime.getRuntime().exec("cmd /c start java -jar D:\\MovieLibrary.jar");
return p;
}
};
FutureTask<Process> futureTask = new FutureTask<Process>(callable);
schedulerExecutor.submit(futureTask);
schedulerExecutor.shutdown();
try {
schedulerExecutor.awaitTermination(10, TimeUnit.SECONDS);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.exit(0);
está funcionando, mas apenas uma vez. Se eu iniciar o aplicativo pela primeira vez e pressionar o menu JYM, ele será encerrado e após alguns segundos abrirá uma nova interface do usuário com o cmd, mas se eu pressionar o menu JYM, o aplicativo será encerrado completamente, ou seja, não será mais iniciad
Eu realmente aprecio sua ajuda
stá resolvid