Después de verificar mucha información, casi volteé el código fuente de Java. El proceso Java ejecuta una secuencia de entrada y dos transmisiones de salida (en relación con los programas externos). Cuando las dos secuencias de salida tienen salida de contenido y el ejecutor de Java no borra la secuencia de salida en el tiempo, el proceso se bloqueará.
Ahora he publicado el código, con la esperanza de ayudar a los compañeros necesitados:
Copie el código de la siguiente manera:/**
* PDF a la función SWF
* @param ruta de entrada y ruta de archivo de salida
* @param inputFileName Ingrese el nombre del archivo
* @param emitir el nombre del archivo de salida de la salida del nombre
* @Return Archivo generado por el archivo SWF
*/
Archivo estático privado TOSWF (String SourceFile, String DestFile, String Command) {
largo BegiNtime = System.nanotime ();
Runtime rt = runtime.getRuntime ();
intentar {
Proceso proceso = rt.exec (comando);
InputStream final isNormal = Process.getInputStream ();
nuevo hilo (nuevo runnable () {
public void run () {
BufferedReader BR = New BufferedReader (new InputStreamReader (isNormal));
StringBuilder buf = new StringBuilder ();
Línea de cadena = nulo;
intentar {
while ((línea = br.readline ())! = null) {
buf.append (línea + "/n");
}
} Catch (ioException e) {
E.PrintStackTrace ();
}
System.out.println ("El resultado de salida es:" + buf);
}
}). Inicio ();
InputStream iserror = Process.getErrorStream ();
BufferedReader BR2 = new BufferedReader (new InputStreamReader (iserror));
StringBuilder buf = new StringBuilder ();
Línea de cadena = nulo;
while ((línea = br2.readline ())! = null) {
buf.append (línea + "/n");
}
System.out.println ("El resultado de error es:" + buf);
intentar {
process.waitfor ();
} capt (interruptedException e) {
E.PrintStackTrace ();
}
} Catch (ioException e) {
E.PrintStackTrace ();
}
Long Time = System.nanotime ();
System.out.println ("To SWF Time toma:" + (EndTime - BegIntime) / 1000000000 + "Seconds" + SourceFile);
devolver nuevo archivo (destfile);
}