Olá (denovo :D)
Então, estou com esse problema que parece bem simples, mas ta complicando aqui...
Eu tenho uma aplicação que chama outros aplicativos pelo Runtime.getRuntime().exec(comando). E logo após eu chamar a aplicação, eu fico esperando resposta do cliente pelo Socket. Ou seja, o programa trava todo esperando a resposta do aplicativo.
Mas o que eu não consigo fazer é verificar se o programa abriu corretamente. Se ele não abrir, eu não quero esperar a resposta do cliente.
Process proc = Runtime.getRuntime().exec(comando);
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
line = br.readLine()
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
if(exitVal > 0){
JOptionPane.showMessageDialog(Main.getJanelaPrincipal(), line);
} else {
Main.setJogoAtivo(Main.getJogos().get(i).getNome());
Main.iniciarServidor();
}
Nesse código, funciona quando tem um erro. Consigo pegar o erro e não roda o socket. Mas quando eu vou rodar com sucesso, o programa abre antes sem eu abrir o socket (pelo fato do proc.waitFor() estar "travando" a aplicação)
Dai se eu colocar o servidor pra iniciar antes, ele trava a aplicação, esperando resposta do cliente, e eu não posso fecha-lo quando vejo que a aplicação não iniciou.
Alguem ai tem uma ideia de como eu posso fazer isso melhor? Ja pesquisei varios lugares e foi o unico jeito que eu achei pra ver se não executou.
Obrigado.

