如何在grails中运行java程序

时间:2014-08-14 16:26:03

标签: java grails

我对此很困惑.... 我有一个我编写的Java应用程序,并希望以grails运行它。

我发现了这篇文章(How to run java programs in grails?),我对批准的解决方案感到困惑。

  1. 我是否需要先制作一个控制器?
  2. 我是否必须从控制器中的java应用程序导入我的java类文件?
  3. 我在src / java中创建了一个ANOTHER控制器,然后从/ project_name / Controllers文件夹中的控制器调用第二个控制器(在src / java中)??
  4. 我只需要一些清晰度。

    谢谢!

    更新:

    好的 - 我制作了我的项目然后放入一个控制器并将我的java文件放在src / jave中。 我有一个控制器文件,这就是它(这是我的控制器中的代码):

    //package mttestbox
    import mttestbox.MTBoxController
    //import MTInit
    
    class MTBoxController {
    
        def index() 
        { 
            MTInit.main(RunMT_GUI)
        }
    }
    

    我收到以下错误(这并不奇怪,因为我很困惑):

    URI:/MTTestBox/MTBox/index
    Class: groovy.lang.MissingPropertyException
    Message: No such property: MTInit for class: mttestbox.MTBoxController
    

    我做错了什么???

    谢谢!

4 个答案:

答案 0 :(得分:1)

同意到目前为止所说的一切,但是想提及,不确定OP的真正意图是什么,grails工作可能是你想要的。他们使用Quartz在计时器上运行的进程,所以如果你只想定期在服务器上运行某些东西而不进行任何网络交互,你就可以走这条路。

答案 1 :(得分:0)

首先,Grails用于创建基于Web的应用程序,因此您需要一个能够响应浏览器请求的控制器。

其次,如果您的控制器与具有public static void main(String[] args)方法的Java程序类不同,那么您需要将该类导入控制器。

最后,您不需要在src/java内创建另一个控制器。控制器存在于grails-app/controllers目录结构中。

按照问题中链接帖子中提供的说明,您将获得完成从Grails控制器调用Java程序所需的一切。

答案 2 :(得分:0)

我找到了答案。 我发现你必须将groovy控制器包声明放在java类文件中。

package <groovy controller name>;

完成后,可以在控制器中使用导入。 一旦我这样做了,我就可以启动grails并转到默认页面,然后,我的应用程序在我的机器上运行,作为grails中的Web调用可执行文件(我做了/ WEB-INF / grails-app / views / XXX / index.gsp找不到错误,但我认为是因为我还没有制作任何GSP(???)。

这是一个巧妙的技巧(使用NetBeans发现):如果你有多个Java类文件: 1.通过添加groovy控制器包名称来编辑其中一个。 2.保存jave文件。 3.突出显示所需的所有java类文件(包括在步骤1中编辑的文件)。 4.将它们移动到grails项目中的Java Source Packages文件夹。 5.当提示时告诉IDE移动它们。 6.当提示时告诉IDE重构。

为您完成所有需要的文件中的所有编辑。 然后 - 运行,看看会发生什么!!!

谢谢大家!!!

ironmantis7x

答案 3 :(得分:0)

在grails中3 您必须将Java程序放入src / main / groovy

在src / main / groovy中创建一个“ hello”包

package hello;

class HelloWorld {
      public static void main(String arg[]){ 

      System.out.println("running java program in grails 3");

      }
}

现在您只需要在控制器中导入hello。*并在index()方法内调用该方法

def index(){
HelloWorld.main()
}

这应该有效。