Ola pessoal, Me deparei com um problema em que preciso finalizar toda e qualquer versão da minha aplicação que estiver rodando.
Alguem sabe como fazer isso? Finalizar um jar que esteja rodando na JVM?
Ola pessoal, Me deparei com um problema em que preciso finalizar toda e qualquer versão da minha aplicação que estiver rodando.
Alguem sabe como fazer isso? Finalizar um jar que esteja rodando na JVM?
system.exit(0);
Não era bem isso cara, system.exit eu já uso, só que eu quero finalizar outros processos do mesmo jar que estejam abertos.
Seria como ter o photoshop fechando o internet Explorer , entedeu???/
se for no linux c pode fazer um ps -ef | java e da um kill em todos os processos…
[quote=luciano@@]Não era bem isso cara, system.exit eu já uso, só que eu quero finalizar outros processos do mesmo jar que estejam abertos.
Seria como ter o photoshop fechando o internet Explorer , entedeu???/
[/quote]
luciano, programas java só exergam o que existe dentro da jvm. Se o outro software for java ok, se não, tem que arrumar outra solução, como jni.
É isso eu tenho um programa java, este programa pode estar aberto várias vezes pelo usuário,
em um determinado momento uma das versões abertas vai fechar e disparar para que todas as outras fechem tem como fazer isso?
Eu consegui fechar usando o taskkill do windows, só que ele fecha o processo javaw que pode ser qualquer processo java, dessa forma não vai funcionar. Tem como eu fechar através da JVM ?
[quote=luciano@@]É isso eu tenho um programa java, este programa pode estar aberto várias vezes pelo usuário,
em um determinado momento uma das versões abertas vai fechar e disparar para que todas as outras fechem tem como fazer isso?
Eu consegui fechar usando o taskkill do windows, só que ele fecha o processo javaw que pode ser qualquer processo java, dessa forma não vai funcionar. Tem como eu fechar através da JVM ?[/quote]
mas porque um programa vai estar aberto varias vezes?
Sei la, talvez se o usuário quizer abrir várias instâncias, tudo depende de quem estiver usando.
mais facil fazer um controle pra poder apenas um não?
Mas fácil é , o problema é q nesse caso eu não tenho autoridade para mudar a especificação.
converse com quem tem, em projetos há mudanças sem problema, e o escopo em si não vai alterar, e mostre que se um usuario puder abrir varios programas na mesma maquina ele pode ficar perdido e ficar remodificando as coisas no programa, faz uma coisa numa janela dai a tabela não da um refresh e ele tenta adicionar dinovo, mostra isso tudo, pois pelo que eu entendo não tem motivo nenhum para abrir mais de um programa por maquina.
[quote=luciano@@]É isso eu tenho um programa java, este programa pode estar aberto várias vezes pelo usuário,
em um determinado momento uma das versões abertas vai fechar e disparar para que todas as outras fechem tem como fazer isso?
Eu consegui fechar usando o taskkill do windows, só que ele fecha o processo javaw que pode ser qualquer processo java, dessa forma não vai funcionar. Tem como eu fechar através da JVM ?[/quote]
Se você quiser dar um kill em um processo java, dê uma olhada nos fontes do plugin kill da jvisualvm
Se é um processo que fica dentro da JVM (como o Julio falou), dá pra pensar em usar um tasklist com jps. Você dá um jps, pega o id do processo, consulta no tasklist e ve qual processo é. Não sei no Linux, mas no Windows acho que funciona dessa forma. É uma forma meio ‘precária’ e custosa, mas acho que pode resolver seu problema.
Caro Andre,
Seu comentário foi de grande ajuda, o jps funciona muito bem acredito que no linux também funcione assim como o javac, muito obrigado pela ajuda.
Caro júlio, momentaneamente consegui terminar a implementação de uma forma que funciona, foi um pouco de pog mas está funcionando. Em breve irei examinar o código da jvisualvm e vou ver se melhora a minha solucão agradeço a todos os demais.