System.exit(0); Não está funcionando

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?!

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!!!

  1. Tire o system.exit(0) de lá, ele é inútil;
  2. 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;
  3. 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!

[quote=snowblacksoul]
gomesrod, quais os problemas que vc encontrou!?[/quote]
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.