Inicializacao x reinicializacao aplicacao

Pessoal, estou terminando o desenvolvimento de um aplicativo java desktop e estou com alguns problemas na implementacao da inicializacao e reinicializacao.
Na inicializacao, hoje tenho uma classe main que exibe um splash, carrega todos os meus servicos, threads, Pool de conexoes, log, etc… depois de carregar todos os servicos a classe main fecha o splash e exibe meu JFrame principal. Isso esta funcionando perfeitamente.
Agora estou precisando reinicializar o aplicativo em tempo de execucao e ainda nao cheguei a uma conclusao de como fazer isso. O processo é o mesmo de uma atualizacao de anti-virus, o aplicativo pega as atualizacoes e reinicializa. Alguem pode me dar uma ideia de como fazer isso ?

Gustavo

Não basta fechar a aplicação e executar a classe principal novamente?

Como faria isso em tempo de execucao ? Sem fechar o aplicativo e executa-lo novamente.

Dentro do seu programa tu pode colocar a verificação se existe uma nova versão em algum lugar (uma url por exemplo).

Se houver, execute um segundo programa (copiador) e feche a aplicação.

Este segundo programa recebeu como parâmetro:

  • local de origem da copia (uma url por exemplo)
  • local de destino (geralmente um diretorio)
  • command line para execução do programa apos a atualização.

Neste segundo programa deve ter um botão que o usuario clica e começa a cópia. Ao terminar a cópia, primeiro executa o programa que acabou de copiar e encerra a execução (do programa copiador).

Pronto!

PS: Considere a utilização de Java Web Start para atualizações de software.

[]s, Welington B. Souza

Assim :smiley:

Explicando um pouco melhor, seria algo como:

public void restartApp()
{
    Thread t = new Thread( new ClassePrincipalQueIniciaTudo() );
    t.start();

    instanciaVelhaDaClassePrincipalQueIniciaTudo.dispose();
}