我正在尝试从Grails应用程序运行grails命令,例如“grails help”,但我所做的所有尝试最终都是“错误:无法找到或加载主类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”命令不是我想要执行的命令,但修复此命令会修复我需要运行的命令。
还有其他想法吗?
答案 0 :(得分:1)
如果我使用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>"
}
}
然后使用grails run-app
运行它,然后转到localhost:8080/script-test/run
,我将grails帮助屏幕呈现为文本到网页。
您将遇到的问题是,这在生产中不起作用,因为您可能要部署war
文件,因此Grails不会知道您的位置或您的身份做(如果确实在服务器上安装了grails)
我认为你需要重新思考你的策略,无论你想做什么: - (