Re: Dialoge Process
Jean-Baptiste BRIAUD -- Novlog <[email protected]> Tue, 22 Feb 2011 23:11:37 +0100
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
Je ne suis pas sur d'avoir bien compris ce que tu voulais faire, mais une bidouille me viens à l'esprit : "shooter l'animation" via des captures d'écran avec awt ... ? On 22 févr. 2011, at 16:45, Erik Mazoyer wrote: > Bonjour à tous, > > Dans nos développements nous avons besoin de transformer un Flash en image sous Java. > Pour cela nous avons écrit une passerelle JNI pour shooter l'animation en C++ et la récupérer en Java. > Malheureusement l'ActiveX Flash n'est pas stable dans le temps et quand il plante, il plante aussi la JVM. > > Pour éviter cela, nous envisageons d'écrire un application C++ et de la lancer depuis Java. > De ce fait, si l'application plante, la JVM n'est pas perturbée. > > Mais (car il y a toujours un mais) il faut mettre en place une communication entre l'application et la JVM (lancer l'application pour chaque rendu est trop consommateur de temps). > Les solutions de dialogue basées sur ip sont proscrites car l'application doit pouvoir fonctionner sur tout ordinateur avec ou sans Firewall sans que l'utilisateur n'est à modifier sa configuration (souvent il n'en a pas le droit). > > J'avais bêtement pensé à utiliser les InpuStream et OutputStream du Process lancé par Java. > > Pour tester cela j'ai écrit une appli C++ qui fait un écho, elle lit en permanence sur std::cin et écrit ce qu'elle lit sur std::cout. > Je l'ai testée sur l'invite de commande avec succès. > > Du coté Java : > > Process process = new ProcessBuilder(processFile.getCanonicalPath()).start(); > OutputStream outputStream = process.getOutputStream(); > InputStream inputStream = process.getInputStream(); > > Ensuite je délègue à des threads le remplissage de l'outputStream et la lecture de l'inputStream. > Seulement voila, je reçois bien le message de l'appli comme quoi elle s'est lancée mais j'ai beau envoyer des caractères sur l'outputStream, je ne reçois rien sur l'inputstream. > > J'ai essayé la lib Shell d'adiGuba (com.developpez.adiguba.shell) sans que ça ne change quoi que ce soit. > > Ave- vous déjà réalisé cela ? > Avez-vous des pistes de réflexions. > > Merci d'avoir lu jusqu'ici :) > > Erik