Après avoir vérifié beaucoup d'informations, j'ai presque traversé le code source Java. Le processus Java exécute un flux d'entrée et deux flux de sortie (par rapport aux programmes externes). Lorsque les deux flux de sortie ont une sortie de contenu et que l'exécuteur Java n'efface pas le flux de sortie dans le temps, le processus sera bloqué.
Maintenant, j'ai publié le code, dans l'espoir d'aider les pairs dans le besoin:
Copiez le code comme suit: / **
* Fonction PDF à SWF
* @param chemin d'entrée et de chemin de fichier de sortie
* @param inputfilename Entrez le nom du fichier
* @Param OutputFileName Nom du fichier de sortie
* Fichier SWF du fichier @return généré
* /
Fichier statique privé TOSWF (String SourceFile, String Destfile, String Commande) {
BEGINTIME = SYSTÈME.NANOTIME ();
Runtime rt = runtime.getRuntime ();
essayer {
Processus process = rt.exec (commande);
Final inputStream isNormal = process.getInputStream ();
nouveau thread (new Runnable () {
public void run () {
BufferedReader br = new BufferedReader (new InputStreamReader (isNormal));
StringBuilder buf = new StringBuilder ();
Chaîne line = null;
essayer {
while ((line = br.readline ())! = null) {
buf.append (ligne + "/ n");
}
} catch (ioexception e) {
e.printStackTrace ();
}
System.out.println ("Le résultat de sortie est:" + buf);
}
}). start ();
InputStream iSerror = process.getErrorStream ();
BufferedReader BR2 = new BufferedReader (new inputStreamReader (iSerror));
StringBuilder buf = new StringBuilder ();
Chaîne line = null;
while ((line = br2.readline ())! = null) {
buf.append (ligne + "/ n");
}
System.out.println ("La sortie d'erreur est:" + buf);
essayer {
process.waitfor ();
} catch (InterruptedException e) {
e.printStackTrace ();
}
} catch (ioexception e) {
e.printStackTrace ();
}
Long EndTime = System.NanoTime ();
System.out.println ("To SWF Time prend:" + (Endtime - Begintime) / 1000000000 + "Seconds" + SourceFile);
renvoyer un nouveau fichier (destfile);
}