我使用GroovyShell類創建了一個groovy引擎。 然後我用「評估」方法運行一堆語句。
有沒有辦法捕捉引擎的輸出,所以我可以得到「println」調用輸出?
目前它轉到stdout,雖然它是一個swing應用程序。如何捕獲GroovyShell輸出?
3
A
回答
2
您只需指定您的自定義作家(如StringWriter的),以out
財產的結合,並把它傳遞給GroovyShell。
def binding = new Binding();
binding.setProperty("out", new YourWriter())
new GroovyShell(binding);
1
您可以使用println
方法設置scriptBaseClass
,並且您可以在該值的基礎上自由操作。請記住,用戶仍然可以執行System.out.println
,但如果需要,則可以執行you can blacklist。
import org.codehaus.groovy.control.CompilerConfiguration
def script = """
a = 10
println a
println "echo"
"""
abstract class Printer extends Script {
void println(obj) {
this.binding.printed << obj
}
}
def config = new CompilerConfiguration(scriptBaseClass: Printer.class.name)
def binding = new Binding([printed: []])
new GroovyShell(this.class.classLoader, binding, config).evaluate script
assert binding.variables.printed.contains(10)
assert binding.variables.printed.contains("echo")
相關問題
- 1. 如何捕獲輸出?
- 2. 捕獲FFMPEG輸出
- 3. pexpect捕獲輸出
- 4. Powershell:如何捕獲主機的輸出
- 5. Powershell:如何捕獲PowerShell輸出
- 6. 如何從shell命令捕獲輸出?
- 7. 如何捕獲clojure的標準輸出?
- 8. 如何捕獲PHP輸出到變量
- 9. 如何捕獲dvdauthor輸出到文件
- 10. 如何捕獲系統的輸出()
- 11. 如何在rails中捕獲ffmpeg輸出?
- 12. 如何從CakePHP Shell捕獲輸出
- 13. 如何捕獲輸出的Java
- 14. 如何捕獲流輸出Python從subprocess.communicate()
- 15. 如何捕獲execvp的輸出
- 16. Vagrant插件:如何捕獲machine.action輸出
- 17. 如何捕獲Windows cmd shell的輸出?
- 18. 如何捕獲RCurl詳細輸出
- 19. 如何在PHP中捕獲捕獲子進程輸出
- 20. GroovyShell退出多行
- 21. 如何捕獲Zend視圖輸出而不是實際輸出
- 22. 如何在C#/ .NET中捕獲二進制輸出輸出
- 23. 從NodeJS捕獲輸出輸出
- 24. 捕獲MS SQL輸出
- 25. 捕獲Python腳本輸出
- 26. 捕獲log4J與grep輸出
- 27. 捕獲子進程輸出
- 28. 捕獲聲音輸出
- 29. 捕獲標量輸出
- 30. Java:捕獲聲音輸出
謝謝。由於我是從java代碼中完成的,你知道我應該如何定義Printer類(Java代碼)嗎? –
既然你正在用Java編寫'Printer',你是否遇到了'this.binding'? – Will
謝謝,我已經想通了。 –