如何从Grails读取控制台输出

时间:2014-12-16 14:24:14

标签: java grails groovy console system.out

我的grails应用程序有一个我开发的外部java库。我希望我的grails应用程序能够显示我的java库system.out语句(控制台输出)。我该怎么做呢?

我宁愿不必把它写到文件中然后用grails读取它。必须有更好的方法来做到这一点。

**我希望grails将这些显示在文本框中(在浏览器中运行时(因此用户可以看到))


Afer尝试了几种我自己的方式,我必须以这种方式解决,我将在这里发布。感谢@Shaunak的帮助和理解。

**我是如何解决的。

在我的java库中,我创建了一个全局类,所有System.out都将写入

writeSouts(String sout){     
    //store here in a global string and keep appending to it as needs be          
}

然后在grails中不断调用java库方法。并使用Ajax将其写入浏览器窗口。

希望这可以帮助将来遇到同样问题的人。

此外,它不是用于测试,而是用于我的Web应用程序的一个组成部分,因此Web应用程序的用户可以是Java库在后台进行的。

1 个答案:

答案 0 :(得分:1)

如果没有关于如何调用Java库的详细信息,我将在此假设它只是一些写入控制台的代码,并且您希望从Grails控制器内部调用和读取它并将其发送回HTML。这就是我的建议。不要将Java代码包含为库,而是从中创建命令行实用程序。

因此,您的java程序将被调用以进行测试,

java MyLib -arg1 -arg2

这应该在命令行上输出这样的内容:

> This is my nice output

现在要从grails调用和读取它,你可以使用Groovy的External Process Management 并执行类似这样的操作来调用和读取输出:

def process = "java MyLib -arg1 -arg2".execute()
def response = "Found text ${process.text}"

您的response var现在应该有值

Found Text This is my nice output 

您现在可以使用它来执行grails控制器中的任何操作,例如将其发送回HTML ..