Depois de verificar muitas informações, quase deslizei o código -fonte do Java. O processo Java executa um fluxo de entrada e dois fluxos de saída (em relação a programas externos). Quando os dois fluxos de saída têm saída de conteúdo e o executor Java não limpa o fluxo de saída no tempo, o processo será bloqueado.
Agora eu publiquei o código, na esperança de ajudar os colegas necessitados:
Copie o código da seguinte forma:/**
* PDF para função SWF
* @Param Path Input and Said File Path
* @param inputfilename digite o nome do arquivo
* @param outputfilename de saída Nome do arquivo
* arquivo SWF gerado pelo arquivo @return
*/
Arquivo estático privado TOSWF (String Sourcefile, String Destfile, String Command) {
long begintime = System.nanotime ();
RunTime RT = RUNTime.GetRuntime ();
tentar {
Processo de processo = rt.exec (comando);
Final inputStream isNormal = process.getInputStream ();
novo thread (novo runnable () {
public void run () {
BufferErader BR = new BufferredReader (novo InputStreamReader (isNormal));
StringBuilder BUF = new StringBuilder ();
Linha de string = null;
tentar {
while ((line = Br.readline ())! = null) {
buf.append (linha + "/n");
}
} catch (ioexception e) {
E.PrintStackTrace ();
}
System.out.println ("O resultado da saída é:" + buf);
}
}). Start ();
InputStream iserror = process.getErrorStream ();
BufferErader Br2 = New BufferredReader (novo InputStreamReader (ISERROR));
StringBuilder BUF = new StringBuilder ();
Linha de string = null;
while ((line = Br2.ReadLine ())! = NULL) {
buf.append (linha + "/n");
}
System.out.println ("A saída de erro é:" + buf);
tentar {
process.waitfor ();
} catch (interruptedException e) {
E.PrintStackTrace ();
}
} catch (ioexception e) {
E.PrintStackTrace ();
}
Long Endtime = System.nanotime ();
System.out.println ("para o tempo da SWF leva:" + (EndTime - iniciante) / 1000000000 + "segundos" + sourcefile);
retornar novo arquivo (destfile);
}