如何重定向 Groovy 脚本的输出?

2024-05-03

我想知道是否有任何方法可以更改我从 Java 代码执行的 groovy 脚本的默认输出 (System.out)。

这是Java代码:

public void exec(File file, OutputStream output) throws Exception {
    GroovyShell shell = new GroovyShell();
    shell.evaluate(file);
}

以及示例 groovy 脚本:

def name='World'
println "Hello $name!"

当前该方法的执行评估写入“Hello World!”的脚本。到控制台(System.out)。如何将输出重定向到作为参数传递的 OutputStream?


尝试使用这个Binding http://groovy.codehaus.org/api/groovy/lang/Binding.html

public void exec(File file, OutputStream output) throws Exception {
    Binding binding = new Binding()
    binding.setProperty("out", output) 
    GroovyShell shell = new GroovyShell(binding);
    shell.evaluate(file);
}

评论后

public void exec(File file, OutputStream output) throws Exception {
    Binding binding = new Binding()
    binding.setProperty("out", new PrintStream(output)) 
    GroovyShell shell = new GroovyShell(binding);
    shell.evaluate(file);
}

Groovy 脚本

def name='World'
out << "Hello $name!"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重定向 Groovy 脚本的输出? 的相关文章

随机推荐

  • Swift 返回类型说明

    我看到一个 Swift 函数写如下 func calculation imageRef CGImage gt red UInt green UInt blue UInt 我需要知道上面函数的返回类型是什么 我无法将它与任何已知类型联系起来
  • 如何在不更改内容字体的情况下更改TabItem的标题字体?

    如何更改 TabItem 标题中的字体而不更改内容的字体 当我设置FontSize财产在TabItem它还改变了 FontSizeTextBlocks
  • 查询计算不同值的数量?

    我在 MS Access 2003 中有一个表 如下所示 url id example com red example com blue example com blue other com red other com orange mor
  • HTML/PHP if-else 语句

    我正在使用 Bootstrap 创建一个网站 我想输入 if else 语句 但我不知道该怎么做 让我解释 Here is an image of my current HTML snippet 现在我想要的是 如果我通过 An Aussc
  • 如何应对本地化?我应该遵循一个标准吗?

    我正在尝试创建一组类来处理本地化 主要是货币部分 但也包括语言 我可以想象其中的逻辑 但我不知道不同的语言和货币使用什么名称 我看到有很多 ISO 标准 我应该选择哪一个 不管怎样 这是我想到的逻辑 以防你也能帮忙解决这个问题 我会有一个
  • NSMutableArrays

    我有一个NSMutableArray作为类的成员变量 In the h file interface bleh NSMutableArray list property readonly assign NSMutableArray list
  • 在 scala 中,如何将 future 列表转换为返回第一个成功 future 的 future? [复制]

    这个问题在这里已经有答案了 所有的未来最终都可能会成功 有些可能会失败 但我们希望第一个成功 并希望将这个结果代表为未来 如果列表中的所有 future 都失败 这个 future 就会失败 如图所示文档 https www scala l
  • getFromLocationName 错误,服务不可用。一直在工作,停止了

    在我的应用程序中 我使用 getFromLocationName 直到最近它一直在应用程序中工作 现在突然我得到的是 服务不可用 异常显示 Geocoder getFromLocationName Geocoder java 178 这是我
  • 括号平衡器程序

    我通过堆栈制作了一个括号检查程序 其中它将以字符串作为输入 并检查字符串或表达式是否具有相等的编号 左大括号和右大括号 如果是 它将打印 括号平衡 否则 括号不平衡 但另一个很奇怪 它只是打印一些随机值 并且不将表达式作为输入 只是自己打印
  • ObserveOn 和 Scheduler.NewThread 不会观察到,如果观察者的 OnNext 被阻塞并继续

    有人可以帮助解释为什么当我 阻止并继续 观察者的 onNext 序列订阅具有时间可观察序列的缓冲区时 Scheduler NewThread 不再适用吗 例如 如果我通过缓冲一系列数字 var query from number in En
  • R chron times() 函数不起作用

    我正在尝试将时间转换为自午夜以来的秒数 我很难从 chron 包中获取 times 函数来工作 我的使用方法如下 gt library chron gt 24 24 60 times 50 Error in 24 24 60 times 5
  • YOUTUBE API:检索视频关键字

    最近 YouTube 决定仅向经过身份验证的开发者输出视频关键字 我注册了开发者密钥 我试图获取一个我将解析的 XML 通过请求 https gdata youtube com feeds api videos COwIYbYQUrQ ke
  • 防止 XAML/C# 中 ListView 的 Return(Enter)、向上和向下箭头键的默认行为 (Windows 10)

    当列表视图具有焦点时 按 Enter 键的默认行为是选择列表视图的第一个元素 向上和向下箭头键滚动列表视图 我试图阻止这种默认行为并连接我的自定义逻辑 我可以使用 KeyDown 为列表视图实现访问键 如下所示 代码隐藏方法 CoreWin
  • 您无权执行该操作

    我有一个时间触发的脚本 可以定期从外部源检索内容并用它更新 Google 网站页面 根据this https developers google com apps script guides triggers installable res
  • 应用程序在后台时远程推送通知 swift 3

    我有一个可以接收远程推送通知的应用程序 我已经实施了didReceiveRemoteNotification这样 func application application UIApplication didReceiveRemoteNoti
  • 包括 Oracle 中的等效项

    在 SQL Server 中你可以这样写 create index indx on T1 A B INCLUDE C D E 有没有办法在 Oracle 中做同样的事情 Refs http msdn microsoft com en us
  • 建议一种每分钟更新时间的方法

    我有一个完整的ajax应用程序 我正在使用下面的代码每分钟更新一次时间 但如果我保持浏览器打开超过 10 分钟 浏览器就会变得无响应 缓慢 建议更好的代码 function tick var d new Date var time padN
  • 如果数据表的主键是两列,您可以使用 DataTable.Contains(object key) 吗?

    如果是这样怎么办 要按主键选择 您应该使用以下之一 DataTable Rows Find Object 如果你的 PK 是一列 DataTable Rows Find Object 如果您有超过 1 列作为主键 对于类型化 DataSet
  • 键值观察和 NSButton 状态

    我试图观察复选框状态 并在复选框状态更改时在应用程序中进行适当的更改 在使用复选框管理窗口的窗口管理器中 我有以下观察者设置 void awakeFromNib myCheckBox addObserver self forKeyPath
  • 如何重定向 Groovy 脚本的输出?

    我想知道是否有任何方法可以更改我从 Java 代码执行的 groovy 脚本的默认输出 System out 这是Java代码 public void exec File file OutputStream output throws Ex