Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在groovy中将输出重定向到stderr?_Java_Scripting_Groovy - Fatal编程技术网

Java 如何在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") 但这有点像手

我正在寻找一种将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")

但这有点像手工操作

如果你只想输入更简短的内容,这里有两个选项。首先,您可以随意导入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"