Executar o .jar apenas uma vez

Galera, estou com um problema … tenho uma aplicação .jar rodando, porém queria limitar a execução da aplicação, se estiver aberto e o usuário for executar, mostrar uma mensagem de alerta de que já está aberto. Alguém pode me ajudar ?

cria um arquivo temporário,

aí vc faz a condição na classe main:

if(!arquivo.exists()){
   //abre o software
   //cria o arquivo...
} else {
   //mostra msg de erro falando q o app ja ta aberto
}
1 curtida

Sou novo em Java, se puder me ajudar com documentação de arquivos temporários. Agradeço … valeu !
Estou procurando aqui já rsrs

Veja: File#createTempFile(String,String), junto com File#deleteOnExit().

Uma opção simples é criar um ServerSocket ao abrir a aplicação, quando o usuário tentar abrir uma nova instância na mesma porta que já está em uso, você pode interromper a execução!

private ServerSocket serverSocket;

try {
    serverSocket = new ServerSocket(9581);
} catch(IOException ex) {
    //Já existe uma instância da aplicação em execução
    System.exit(0);
}
3 curtidas

@Jonathan_Medeiros deu certo aqui, só uma dúvida … o que seria o 9581 ?

Um número de porta aleatória.

Vou testar aqui numa rede compartilhada, e ver se tem algum problema … deixei o número desta porta mesmo. OBS: a aplicação vou deixar rodando local na máquina mesmo, acredito que não tenha problema numa rede compartilhada. Muito obrigado a todos pela ajuda !!

Tem um exemplo pronto que eu postei neste tópico, inclusive ele foca a na janela do programa que já está executando.

1 curtida