Executar programa dentro do JAVA

5 respostas
A

Ola Pessoal…

Estou fazendo um programa que roda programa em fortran no JAVA… porem o programa so ira continuar se a execucao do programa fortran for concluida…

Eu fiz assim:

try{
 Runtime run = Runtime.getRuntime();
 Process process=run.exec(instrucao);
.
.
.

porem eu tentei colocar o

process.waitFor();

porem no Windows nao funciona… como poderia resolver esse problema???

Obrigada

obs: o programa em fortran gera saidas na tela…–> talvez esse seja o problema… porem nao estou conseguindo resolver…

5 Respostas

D

Ana, bom dia…

Acho q. só com thread mesmo…

em uma thread vc deixa seu comando executando…assim não atrapalha o funcionamento do resto da aplicação…

http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html

t+

A

Ok Diana…

Encontrei uma classe que faz o que eu quero:

Pessoal… achei uma solucao em outro forum… eles criaram outra classe:

class StreamGobbler extends Thread {
 InputStream is;
 String type;
 StreamGobbler(InputStream is, String type) {
 this.is = is;
 this.type = type;
 }
 public void run() {
 try {
 InputStreamReader isr = new InputStreamReader(is);
 BufferedReader br = new BufferedReader(isr);
 String line = null;
 while ((line = br.readLine()) != null) {
 System.out.println(type + ">" + line);
 }
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 }

Obrigada

L

Pelo que entendi ela quer justamente o contrario, que o comando executado atrapalhe no funcionamento do resto da aplicação, no caso atrasando a execução dela até que o processamento do comando acabe.

Sera que a sua instrução esta executando certo no windows?! pode ser que ela não esteja executando, o SO da tipo uma mensagem de erro qualquer e waitFor não espera nada porque já terminou de executar

ps: estou chutando, nunca usei waitFor =)

L

ops, respondi tarde demais… mas vendo a solução, acho que então não entendi seu problema :oops:

ou pera, por acaso executando em um thread separado, e no caso mostrando as saidas do programa na tela, faz com que waitFor funcione?! atraves desses input que ele vai saber que o processo acabou de executar?! quando não tem mais input o waitFor entende como fim do processo?!

valeu!

L

*** duplicado (falha na internet aqui postei 2x), deleta por favor.

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 5
Participantes 3