Java 如何在groovy中将输出重定向到stderr?
我正在寻找一种将groovy脚本中的输出重定向到stderr的方法:Java 如何在groovy中将输出重定向到stderr?,java,scripting,groovy,Java,Scripting,Groovy,我正在寻找一种将groovy脚本中的输出重定向到stderr的方法: catch(Exception e) { println "Want this to go to stderr" } Groovy可以访问JRE: System.err.println "goes to stderr" 虽然可能有一种更为常规的方式…就在我的头顶上,你不能做一点自我连接吗: def printErr = System.err.&println printErr("AHHH") 但这有点像手
catch(Exception e) {
println "Want this to go to stderr"
}
Groovy可以访问JRE:
System.err.println "goes to stderr"
虽然可能有一种更为常规的方式…就在我的头顶上,你不能做一点自我连接吗:
def printErr = System.err.&println
printErr("AHHH")
但这有点像手工操作如果你只想输入更简短的内容,这里有两个选项。首先,您可以随意导入java.lang.System,特别是像“sys”这样较短的东西: 其次,您可以将System.err流分配给一个变量,并从此将该变量用作System.err的别名,如:
err = System.err
err.println("ERROR again Will Robinson")
这有一个可能的优点,即System.err的所有功能都可以访问,因此您不必单独连接每个功能(例如err.print、err.println等)
希望有一种标准的Groovy方式,因为特殊的重命名可能会让阅读代码的人感到困惑 另一个非常紧凑的替代方案是:
System.err << "Want this to go to stderr"
System.err是的,我希望有一种Groovy风格的方式。甚至可以重新定义println:(def println=System.err.&println
)-在脚本开始时很有用,该脚本通过类似foo.write(System.in)
的方式将结果写入stdout,如果与GString一起使用,则会抛出MissingMethodException
。例如,这不起作用:printErr“Problem with:$aVariable”
由于此答案可能已经过时,我已将其设置为社区可编辑。@MatthiasBraun我无法重现您在2.4.12上的错误:它与GString
s一起工作。
System.err << "Want this to go to stderr"
def err = System.err
...
err << "Want this to go to stderr"