我试图从一个grails应用程序运行一个类似于"grails help“的Grails命令,但我所做的所有尝试都以"Error: main not find or load main class org.codehaus.groovy.grails.cli.support.GrailsStarter".”结束
基本上,我试过了
def p1 = "grails help".execute()
p1.waitFor()
println "return code: ${ p1.exitValue()}"
println "stderr: ${p1.err.text}"
println "stdout: ${p1.in.text}"另外:
Runtime runtime = Runtime.getRuntime()
Process process = runtime.exec("grails help")
process.waitFor()
println "return code: ${ process.exitValue()}"
println "stderr: ${process.err.text}"
println "stdout: ${process.in.text}"最后:
def sout = new StringBuffer()
def serr = new StringBuffer()
final processBuilder = new ProcessBuilder()
processBuilder.directory(new File("/myFolder"))
processBuilder.command(["grails","help"])
println processBuilder.directory()
Process proc = processBuilder.start()
proc.consumeProcessOutput(sout, serr)
def status = proc.waitFor()
println 'sout: ' + sout
println 'serr: ' + serr当然,"grails help“命令不是我想要执行的命令,但是修复这个命令就可以修复我需要运行的命令。
还有其他想法吗?
发布于 2014-02-17 21:47:01
如果我使用grails 2.3.5 (grails create-app script-test)创建一个新应用程序,然后声明一个控制器(grails create-controller test.Run)并更改它,使其如下所示:
package test
class RunController {
def index() {
def t = [ 'grails', 'help' ].execute().text
render "<pre>$t</pre>"
}
}您将遇到的问题是,这在生产环境中将不起作用,因为您可能要部署一个war文件,因此grails不会知道您在哪里,或者您正在做什么(如果确实在服务器上安装了grails )
https://stackoverflow.com/questions/21827704
复制相似问题