【问题标题】:Grails import class from java or groovy folderGrails 从 java 或 groovy 文件夹导入类
【发布时间】:2015-10-31 07:21:11
【问题描述】:

我在 src/groovy/search/ 文件夹中放置了几个 .groovy 脚本,但对如何在我的控制器中使用它们感到迷惑。 我的控制器是 grails-app/controller/EnvironmentController.groovy,我想知道如何导入类似的类

import src.groovy.search.*

如果有人能指出我在 Grails 中如何导入的完整解释(即项目中如何包含 groovy 和 java 文件夹以及如何导入它们,包括在 groovy 中导入 java 文件夹),我将不胜感激. 谢谢!

编辑:我的 grails 在 2.4.4

【问题讨论】:

  • 只是回答我自己的问题,如果你在/java和/groovy下有java/input和groovy/input这样的包,它们可以通过import input一起导入。*。

标签: grails


【解决方案1】:

Grails 中的导入工作方式与 Java 相同。您将 groovy 文件放在 src/groovy 下,将 java 文件放在 src/java 下。导入时只需使用包名导入,无需在导入中包含 src 或 groovy。

关于如何在控制器或任何地方执行 groovy 脚本,你不能只导入它们。我假设您在谈论 groovy 脚本而不是 groovy 类。要执行 groovy 脚本,您有两种选择。

假设您 Sample.groovy 脚本文件包含以下代码

public void sayHello(String name) {
    println "Say Hello to $name..."
}

public static void sayStaticHello(String name) {
    println "Say Static Hello to $name..."
}

因此,为了在您的控制器中执行它,您可以执行以下任一操作:

def script = new GroovyShell().parse(new File('<Path to SampleScript.groovy>'))
script.sayHello("Sandeep Poonia")
script.sayStaticHello("Sandeep Poonia")

//for non-static methods
this.class.classLoader.loadClass("SampleScript").newInstance().invokeMethod("sayHello", "Sandeep Poonia")

//for static method
this.class.classLoader.loadClass("SampleScript").invokeMethod("sayStaticHello", "Sandeep Poonia")

【讨论】:

  • 感谢您的回复!虽然我实际上的意思是导入一个 groovy 类,但你的回答确实有帮助。
【解决方案2】:

使用和 IDE:(Grails 2 或更少的 GGTS/STS)(Grails 3 Intelij 社区版)

组织导入功能快捷方式:

在 GGTS/STS(Eclipse) 上

Ctrl + shift + o all together

在 Intelij 上

Ctrl + Alt + o all together

在你的情况下,如果你使用 vi 或一些文本编辑器,那么你只需要:

import search.*

即删除src.groovy.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2020-04-26
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多