Galera blz?!
Bem tenho um código que chama um .jar para executar, ele abre um dela do Dos, no caso como estou usando o Ubuntu 11.04 ela abre o terminal no final do código, estou colocando o System.exit(0); para fechar o terminal, mas nao está funcionando o qe devo fazer?!
System.exit(0); Não está funcionando
13 Respostas
Post o código, fica mais fácil para ajudar.
Tenho só um ano em Java, mas o comando System.exit(0) é só para fechar a aplicação Java que está em execução… Mas por favor post esse código que eu fiquei curioso.
Esse é o codigo pessoal
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
public class teste {
public static void main(String[] args) throws InterruptedException {
Date d = new Date();// intancio o objeto date
Calendar c = new GregorianCalendar();// instancio o objeto GregorianCalendar
c.setTime(d);
String nome = "";
int dia = c.get(c.DAY_OF_WEEK);// pega semana, de segunda a domingo
switch (dia) {
case Calendar.SUNDAY:// se for domingo
nome = "segunda";
while (dia == 1) {
System.out.println("Aguardando 5 segundos....");
Date a = new Date();// pega nova data
Calendar b = new GregorianCalendar();
b.setTime(a);
dia = b.get(Calendar.DAY_OF_WEEK);
Thread.sleep(5000);
}
break;
case Calendar.SATURDAY:// se for sabado
nome = "segunda";
while (dia == 7) {
Date a = new Date();
Calendar b = new GregorianCalendar();
System.out.println("Aguardando 5 segundos...");
b.setTime(a);
dia = b.get(Calendar.DAY_OF_WEEK);
if (dia == 1) {// quando sair do sabado ele entrar no loop do domingo
while (dia == 1) {
Date e = new Date();// pega nova data
Calendar f = new GregorianCalendar();//instancia objeto GregorianCalendar
System.out.println("Aguardando 5 segundos...");
f.setTime(e);
dia = f.get(Calendar.DAY_OF_WEEK);
Thread.sleep(5000);
}
}
}
break;
default:
System.out.println("Dia Normal");
try {
Runtime.getRuntime()
.exec("/home/dsantan/workspace/Ps_BT_PLTA_ATIS_PQ_PLN/dist/ps_bt_plta_atis_pq_pln.jar");
System.exit(0);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro Sistema : " + e);
}
}
}
}
como faço pra mandar a imagem!?
eu nao tenho certeza como mas acho que ja vi gente falando aqui no forum que tem como desativar o funcionamento do System.exit (acho que era via argumento na execução do software).
da uma pesquisada.
Obs: Não estou usando ruindows e sim Ubuntu11.04!!!
- Tire o system.exit(0) de lá, ele é inútil;
- Drene o OutputStream e o ErrorStream do seu processo em uma thread separada (você pode usar o StreamRedirector, feito para isso). É uma boa até jogar essa saída em algum arquivo;
- Use o método waitFor() para esperar o processo terminar.
O exec cria um processo filho, um subprocesso. Você não pode finalizar a sua aplicação antes desse processo acabar também.
Esse código só serve para passar o fim de semana em loop e quando chegar a segunda-feira executar um programa externo?
Parece que essa solução tem alguns problemas… se quiser explicar melhor a necessidade talvez o pessoal possa discutir outras alternativas.
Como por exemplo usar o cron.
ou utlizar o quartz, fazendo com que seu codigo só execute nos dias e horarios que vc quer http://www.quartz-scheduler.org/
Bom pessoal , acho que vc’s nao estao entendendo.
O sistema está funcionando perfeitamente, sem problemas quanto as datas
gomesrod, quais os problemas que vc encontrou!?
Pessoal o que eu quero é fechar a janela do terminal , só isso
mas não está acontecendo, ele chama o programa está beleza, no final ele pede pra dar enter para sair do terminal é isso que eu nao quero!!
Olá vini, poderia me explicar melhor, como sou novato, nao sei ainda muita coisa.
grato
Alguém trabalha com linux!
gomesrod, quais os problemas que vc encontrou!?
O propósito do sleep é ser usado para coisas “menores”, uma pausa no processamento aqui, outra ali… não para adiar a tarefa para outro dia.
Um sleep de 2 dias antes de executar a tarefa é tempo demais! (tudo bem que é aos poucos, de 5 em 5 segundos, mas na verdade é isso, 2 dias sleeping)
Isso torna o processo muito frágil, pois nesse tempo podem acontecer inúmeras coisas para estragar tudo (o processo cair, a maquina ser reiniciada, um Ctrl+C no terminal, etc.). Na segunda-feira você estará esperando um resultado que nunca vai ter.
O ideal é ter uma solução mais robusta, um sistema de agendamento que sabe lidar melhor com os infortúnios. Nesse tópico foram citados o cron (padrão do linux, não precisa instalar nada) e o quartz (uma ferramenta mais sofisticada). Utilizando esses caras dificilmente acontecerá alguma coisa que impeça seu processo de ser executado.
Sobre a janela: seu programa não é interativo, então é possível abrir mão da console, use o javaw ao invés do java para invocá-lo. E faça as alterações sugeridas pelo Vini, como não haverá console as saídas devem ser direcionadas para um arquivo.
