我想从我的Grails应用程序执行svn delete。我在Grails控制台中测试了以下两项:

"svn delete /usr/share/mydir".execute()

Runtime.getRuntime().exec("svn delete /usr/share/mydir")

在这两种情况下,都将返回java.lang.Process的实例,但是不会执行命令(不删除/usr/share/mydir)。

仅当应用程序在Linux(Ubuntu)上运行时,才会发生此行为。如果我在Windows上运行该命令,则该命令确实会执行。

更新

按照蒂姆在注释中的建议,我更改了命令,以便捕获过程输出:
def process = "svn delete /usr/share/mydir".execute()
def out = new StringBuilder()
process.waitForProcessOutput(out, new StringBuilder())

println "$out"

我现在看到失败的原因是:

最佳答案

以下代码对我来说在CentOS上运行良好。

    def scriptCom="/folderlocation/shellscript.sh"
    println "[[Running $scriptCom]]"
    def proc = scriptCom.execute()

    def oneMinute = 60000
    proc.waitForOrKill(oneMinute)

    if(proc.exitValue()!=0){
        println "[[return code: ${proc.exitValue()}]]"
        println "[[stderr: ${proc.err.text}]]"
        return null
    }else{
        println "[[stdout:$revisionid]]"
        return proc.in.text.readLines()
    }

关于java - 从Grails应用执行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11358109/

10-09 05:48
查看更多