Processo javaw.exe executando com o sistema já encerrado

8 respostas
D

Eu tento mover o arquivo jar após fechar o sistema, e aparece a mensagem de erro dizendo que o processo está sendo usado por outro programa.
Imagina se forem vários arquivos jar, então vai travar o computador do usuário.

Como fazer ele parar de executar após fecharmos nossos sistemas?

Obrigado.

8 Respostas

berg.pb

Dar123,

o sistema pode estar fechado, mas a JVM pode estar rodando utilizando o arquivo.
Entre no Gerenciador de Dispositivos e feche todos os processos que tiver Java.
Daí, tente remover o arquivo.

Abraços

D

Eu também pensei nisso, agora acho que é a JVM mesmo…

Mas isso é chato, pois se isso acontecer com um cliente meu, tipo, o cara abriu o programa mais de
1000 vezes num dia, certamente o computador dele vai travar, pois a JVM fica usando o processo toda vez…

T

Para forçar a barra, use System.exit(0) no evento do encerramento do sistema. Isso irá fazer com que o javaw.exe (que executa o seu JAR) encerre o processamento.

D

Sim mas eu estou usando swing pra Frame, e pelo que conheço não
dá pra usar system.exit quando o usuário clicar no “X” para fechar, e sim em algum botão, pois daí está ativando o método System.exit(0) por um evento.

T

dark123:
Sim mas eu estou usando swing pra Frame, e pelo que conheço não
dá pra usar system.exit quando o usuário clicar no “X” para fechar, e sim em algum botão, pois daí está ativando o método System.exit(0) por um evento.

Ler a documentação não machuca ninguém.
setDefaultCloseOperation

  • passe JFrame.EXIT_ON_CLOSE
D

Ah eu conheço este modo de fechar a janela, mas mesmo assim, as vezes ainda
continua rodando após o encerramento do processo.

Acho que vou tentar usar um

setCloseDefaultOperation(1) // que fecha apenas a janela respectiva...

E também não importar da biblioteca assim:

import javax.swing.*;  // pois estaria importando tudo e poderia causar isso também

Depois posto respostas…

jgbt

dark123:
Ah eu conheço este modo de fechar a janela, mas mesmo assim, as vezes ainda
continua rodando após o encerramento do processo.

Acho que vou tentar usar um

setCloseDefaultOperation(1) // que fecha apenas a janela respectiva...

como ja foi falado, EXIT_ON_CLOSE sempre funcionou nessa situação, alias foi feito p/ isso.
como sugerido, de uma lida na documentação

isso não exite, é mais uma lenda urbana do java. Não faz diferença importar uma classe de um pacote ou usar *.

[]´s

D

Obrigado por deixar isso bem claro jgbt.

[]s.

Criado 4 de setembro de 2008
Ultima resposta 4 de set. de 2008
Respostas 8
Participantes 4