Hallo!
Ich versuche gerade einen JAVA-Wrapper zu schreiben, der sowohl Daten aus einem interaktiven Programm liest und auch Daten in dasselbe Programm schreibt. Das interaktive Program ist in Perl geschrieben und wenn ich es manuell benutze, gibt es keine Probleme. Der relevante Teil meines Java Programms sieht wie folgt aus:
Das Problem ist, dass das Programm endlos lang läuft, aber nichts ausgibt.
Das Programm hängt bei dem Befehl "line=instream.readLine()".
Ich hatte erst vermutet, dass diese Probleme dadurch entstehen, dass das Perl-Programm ein paar
Sekunden zum Laden braucht. Deshalb habe ich mithilfe von "Thread.sleep()" den Thread für ein paar Sekunden warten lassen. Hat leider nichts gebracht.
Ich habe auch sichergestellt, dass mir das Perl-Skript seine Ausgaben auf STDOUT schreibt und nicht auf STDERR, also kann es auch nicht an "getIntputStream()" liegen.
Kann mir irgendjemand weiterhelfen?
Vielen Dank im Voraus!
Ich versuche gerade einen JAVA-Wrapper zu schreiben, der sowohl Daten aus einem interaktiven Programm liest und auch Daten in dasselbe Programm schreibt. Das interaktive Program ist in Perl geschrieben und wenn ich es manuell benutze, gibt es keine Probleme. Der relevante Teil meines Java Programms sieht wie folgt aus:
Code:
private OutputStreamWriter outstream;
private BufferedReader instream;
Process process = Runtime.getRuntime().exec("perl " +
"/workspace/trec-qa-2006/ext/WordNetSimilarity/WordNet-Similarity-1.03/utils/similarity.pl " +
"--type=WordNet::Similarity::wup --interact");
outstream = new OutputStreamWriter(process.getOutputStream());
instream = new BufferedReader(new InputStreamReader(process.getInputStream()));
outstream.write("eat\n");
outstream.write("feed\n");
outstream.flush();
String line = null;
while((line=instream.readLine()) != null){
System.out.println("Line: " + line);
}
Das Problem ist, dass das Programm endlos lang läuft, aber nichts ausgibt.
Das Programm hängt bei dem Befehl "line=instream.readLine()".
Ich hatte erst vermutet, dass diese Probleme dadurch entstehen, dass das Perl-Programm ein paar
Sekunden zum Laden braucht. Deshalb habe ich mithilfe von "Thread.sleep()" den Thread für ein paar Sekunden warten lassen. Hat leider nichts gebracht.
Ich habe auch sichergestellt, dass mir das Perl-Skript seine Ausgaben auf STDOUT schreibt und nicht auf STDERR, also kann es auch nicht an "getIntputStream()" liegen.
Kann mir irgendjemand weiterhelfen?
Vielen Dank im Voraus!