Comment rediriger la sortie de script Groovy?
Je me demande si il existe un moyen pour que je puisse changer la sortie par défaut (Système d'.pour le script groovy que je suis l'exécution de mon code Java.
Voici le code Java:
public void exec(File file, OutputStream output) throws Exception {
GroovyShell shell = new GroovyShell();
shell.evaluate(file);
}
Et l'exemple de script groovy:
def name='World'
println "Hello $name!"
Actuellement l'exécution de la méthode, évalue les scripts qui écrit "Hello World!" dans la console (le Système.out). Comment puis-je rediriger la sortie de la OutputStream passé en paramètre?
OriginalL'auteur Tomasz Błachowicz | 2009-10-07
Vous devez vous connecter pour publier un commentaire.
Essayez ceci à l'aide de La liaison
Après les commentaires
Groovy Script
Vous étiez à propos droit. La solution consiste à envelopper la sortie int java.io.PrintStream et pass comme "out" de la propriété à la coque!
yay!!!, mon premier badge bronze! Heureux, il s'en sortir! Comment avez-vous envelopper à la sortie?
Bravo! Utilisez simplement new PrintStream(sortie) et pass comme "out" de la propriété à la liaison.
Vraiment? de liaison.setProperty prend un OutputStream et ça marche sans appel .écrivez??
OriginalL'auteur jjchiw
Je soupçonne que vous pourriez faire cela très bien en remplacement de la
println
méthode dans votre GroovyShell de la métaclasse. Les ouvrages suivants, en Groovy Console:de sortie:
OriginalL'auteur Armand
Comment sur l'utilisation de javax.script.ScriptEngine? Vous pouvez spécifier son écrivain.
OriginalL'auteur Safrain
Utilisation SystemOutputInterceptor classe. Vous pouvez commencer à l'interception de sortie script avant d'évaluation et d'arrêter après.
OriginalL'auteur Krzysztof Atłasik
http://java.sun.com/j2se/1.3/docs/api/java/lang/System.html#setOut%28java.io.PrintStream%29 est juste ce dont vous avez besoin.
OriginalL'auteur David Winslow