首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获GroovyShell输出?

如何捕获GroovyShell输出?
EN

Stack Overflow用户
提问于 2013-07-22 19:02:03
回答 2查看 1.9K关注 0票数 4

我使用GroovyShell类创建了一个groovy引擎。然后,我使用"evaluate“方法运行一系列语句。

有没有办法捕获引擎的输出,这样我就可以得到"println“调用的输出?

尽管它是一个swing应用程序,但目前它转到了stdout。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-03 01:31:30

您可以只分配您的自定义Writer (例如,StringWriter)设置为绑定中的out属性,并将其传递给GroovyShell。

代码语言:javascript
复制
def binding = new Binding();
binding.setProperty("out", new YourWriter())
new GroovyShell(binding);
票数 2
EN

Stack Overflow用户

发布于 2013-07-22 19:53:06

您可以使用println方法设置scriptBaseClass,并且可以自由地对该值进行操作。请记住,用户仍然可以执行System.out.println,但如果需要,可以使用you can blacklist

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17785911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档