我知道这有点奇怪,但是我试图从一个普通的脚本中运行Java可执行文件:
def mycommand = "java -version"
def env = System.getenv().collect { k, v -> "$k=$v" }
def mycommandOut = mycommand.execute(env,null).text
println mycommandOut
这在Windows上很好用,但是当我在Linux上运行时,它似乎什么也没做。
如果我设置了mycommand = "ls -la"
,它就像是一种魅力。
如果我设置了mycommand = "foobar"
,我得到:java.io.IOException:无法运行程序“ foobar”:error = 2
有任何提示吗?
答案 0 :(得分:2)
这是因为java -version
在Linux上将信息打印到STDERR。但是您正在捕获STDOUT。
def proc = "java -version".execute()
proc.waitFor()
def version = proc.err.text