После того, как я проверил много информации, я чуть не пропустил исходный код Java. Процесс Java выполняет один входной поток и два выходных потока (относительно внешних программ). Когда два выходных потока имеют вывод контента, а исполнитель Java не очищает выходной поток во времени, процесс будет заблокирован.
Теперь я опубликовал код, надеясь помочь в нуждающихся сверстниках:
Скопируйте код следующим образом:/**
* PDF для функции SWF
* @param path ввод и выходной файл
* @param inputfilename Введите имя файла
* @param outputfilename Имя файла
* @return File сгенерированный файл SWF
*/
Private Static File TOSWF (String SourceFile, String destfile, String Command) {
long bomintime = System.nanotime ();
Время выполнения rt = runtime.getRuntime ();
пытаться {
Процесс процесса = rt.exec (команда);
конечный inputStream isNormal = process.getInputStream ();
Новый поток (new Runnable () {
public void run () {
BufferedReader BR = новый BufferedReader (New InputStreamReader (isNormal));
StringBuilder buf = new StringBuilder ();
String line = null;
пытаться {
while ((line = br.readline ())! = null) {
buf.append (line + "/n");
}
} catch (ioException e) {
e.printstacktrace ();
}
System.out.println («Результат вывода:» + buf);
}
}). start ();
Inputstream iserror = process.getErrorsTream ();
BufferedReader BR2 = новый BufferedReader (New InputStreamReader (ISERROR));
StringBuilder buf = new StringBuilder ();
String line = null;
while ((line = br2.readline ())! = null) {
buf.append (line + "/n");
}
System.out.println («Вывод ошибки:» + buf);
пытаться {
process.waitfor ();
} catch (прерванная экспрессия e) {
e.printstacktrace ();
}
} catch (ioException e) {
e.printstacktrace ();
}
Long EndTime = System.Nanotime ();
System.out.println («To SWF Time Takes:» + (EndTime - Betrintime) / 1000000000 + «Секунды» + SourceFile);
вернуть новый файл (destfile);
}