Nachdem ich viele Informationen überprüft hatte, habe ich fast den Java -Quellcode durchgeflippt. Der Java -Prozess führt einen Eingangsstrom und zwei Ausgabestreams aus (relativ zu externen Programmen). Wenn die beiden Ausgabestreams die Ausgabe des Inhalts haben und der Java -Executor den Ausgangsstrom nicht rechtzeitig löscht, wird der Prozess blockiert.
Jetzt habe ich den Code gepostet und gehofft, Peers in Not zu helfen:
Kopieren Sie den Code wie folgt:/**
* PDF zur SWF -Funktion
* @param Pfadeingabe- und Ausgabedateipfad
* @param InputFileName Dateinamen eingeben
* @param outputFileName Ausgabedatei Name
* @Return -Datei generierte SWF -Datei
*/
private statische Datei TOSWF (String SourceFile, String Destfile, String -Befehl) {
langer BeginTime = System.nanotime ();
Runtime Rt = RunTime.getRuntime ();
versuchen {
Process process = rt.exec (Befehl);
Final InputStream isNormal = process.getInputStream ();
neuer Thread (neuer Runnable () {
public void run () {
BufferedReader BR = neuer BufferedReader (neuer InputStreamReader (ISNormal));
StringBuilder buf = new StringBuilder ();
String line = null;
versuchen {
while ((line = br.readline ())! = null) {
buf.Append (Zeile + "/n");
}
} catch (ioException e) {
E. printstacktrace ();
}
System.out.println ("Das Ausgabeergebnis ist:" + buf);
}
}). start ();
InputStream iSError = process.getErrorStream ();
BufferedReader BR2 = neuer BufferedReader (neuer InputStreamReader (ISerror));
StringBuilder buf = new StringBuilder ();
String line = null;
while ((line = br2.readline ())! = null) {
buf.Append (Zeile + "/n");
}
System.out.println ("Fehlerausgabe ist:" + buf);
versuchen {
process.waitfor ();
} catch (InterruptedException e) {
E. printstacktrace ();
}
} catch (ioException e) {
E. printstacktrace ();
}
Long Endzeit = System.nanotime ();
System.out.println ("zu SWF -Zeit dauert:" + (Endime - BeginTime) / 1000000000 + "Sekunden" + SourceFile);
Neue Datei zurückgeben (destfile);
}