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