Olá pessoal!
Como faço para uma aplicação se auto-reiniciar? Tipo quando você faz alguma configuracação importante e o programa pede para reiniciar para que as configurações sejam efetivadas. É muito desagradável dar somente uma mensagem alertando o usuario de que isso é necessário mas quem tem que fazer isso é ele.
Obrigado a todos!
Você pode fazer assim:
String comando = "java -jar " + new File("").getAbsolutePath() + "\\jarPrincipalDaAplicacao.jar";
try {
Process Processo = Runtime.getRuntime().exec(Comando);
} catch ( IOException MensagemdeErro ) {
this.ErrosdoComando.append(MensagemdeErro.toString());
}
System.exit(0);
Sim pensei nisso mas e se o usuario mudar o nome da aplicação? Acho que vou usar essa por enquanto mas será não teriam uma maneira mais fexivel e independente do nome?
Pegue o nome do jar:
Class cls = Main.class;
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();
JOptionPane.showMessageDialog(null, loc);
Loc será um URL até o jar que contém a classe Main.class
Valeu Ecassio, deu certo, ficou assim:
Class cls = Main.class;
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();
JOptionPane.showMessageDialog(null, loc.toString().substring(5));
String comando = "java -jar " + loc.toString().substring(5);
JOptionPane.showMessageDialog(null, comando);
try {
Process Processo = Runtime.getRuntime().exec(comando);
} catch ( IOException MensagemdeErro )
{
System.out.println(MensagemdeErro);
}
System.exit(0);
[quote=gqferreira]Olá pessoal!
Como faço para uma aplicação se auto-reiniciar? Tipo quando você faz alguma configuracação importante e o programa pede para reiniciar para que as configurações sejam efetivadas. É muito desagradável dar somente uma mensagem alertando o usuario de que isso é necessário mas quem tem que fazer isso é ele.
[/quote]
Humm… vamos supor que a sua aplicação é um objecto Application (ainda não é? hum…)
Para reiniciar vc faz
Application.getInstance().stop();
Application.getInstance().start();
ou
Application.getInstance().restart();
No main vc tem o seguinte codigo
[code]public void static main(String[] args){
Application.getInstance().start();
}[/code]