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