Uma pergunta meio cretina, mas não custa:

Você deixou um loop infinito para “ouvir” o programa em que você se conecta?

exemplo:

while( true ) { // leia o input stream }

Estou precisando fazer a comunicação de uma classe java com um processo de um programa (estilo prompt) da seguinte forma:

Minha classe java deverá ter um método que recebe como parâmetro um String (que será a entrada do programa que esta rodando como processo) e deve retornar a saída do programa.

Tentei fazer isto com streams do java.io mas só consigo fazer isto uma vez, não consigo manter uma interação com o processo.

Obrigado por qualquer ajuda e/ou dica!! :wink:

Taciano

public AvaliaSML() throws IOException {
		iniciar();
	}
	
	private void iniciar() throws IOException {
		processSML = Runtime.getRuntime().exec("mosml");
		
		output = new BufferedWriter(
			new OutputStreamWriter(processSML.getOutputStream())
		);
		
		input = new BufferedReader(
			new InputStreamReader(processSML.getInputStream())
		);
	}

public String avaliar(String entrada) throws IOException, InterruptedException {
    	  		
    	output.write(entrada);
    	output.close();
		
		String completInput = "
";
			String str;
			for (int i = 0; i < 2; i++) {
				completInput = completInput + this.input.readLine() +"
";
			}
	
		completInput = "";
				
		while ((str = input.readLine()) !=null) {
			completInput = completInput + str + "
";
		}
		input.close();
		
		return completInput;
}

Este é parte do meu código!!!

Desta forma quando chamo uma segunda vez os stream estão fechados!!! Tirando os close não funciona!!! porque?