Скрипт Grails вызывает мои собственные классы Java - PullRequest
0 голосов
/ 08 июля 2011

Я только что создал скрипт grails для создания базы данных, но код написан на Java, и я подумал, что смогу использовать его в скрипте grails.

Это мой скрипт

import com.test.database.*
import com.test.constant.*
import org.neo4j.kernel.*

target(main: "The description of the script goes here!") {
    db = DataRepository.getInstance(new EmbeddedGraphDatabase(
        Constant.PROJECT_PATH + "/web-app/WEB-INF/resources/db"))

}

setDefaultTarget(main)

А у меня java классы в src / java, но когда я запускаю скрипт, я получаю эту ошибку

Error executing script DbCreate: No such property: DataRepository for class: DbCreate
No such property: DataRepository for class: DbCreate
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:387)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
    at gant.Gant.withBuildListeners(Gant.groovy:427)
    at gant.Gant.this$2$withBuildListeners(Gant.groovy)
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
    at gant.Gant.dispatch(Gant.groovy:415)
    at gant.Gant.this$2$dispatch(Gant.groovy)
    at gant.Gant.invokeMethod(Gant.groovy)
    at gant.Gant.executeTargets(Gant.groovy:590)
    at gant.Gant.executeTargets(Gant.groovy:589)
Caused by: groovy.lang.MissingPropertyException: No such property: DataRepository for class: DbCreate
    at DbCreate$_run_closure1.doCall(DbCreate:11)
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)

Мой вопросМогу ли я вызвать пользовательские классы Java в скрипте Grails?

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Если вы используете 1.3.6 или выше, вы можете использовать http://grails.org/doc/latest/ref/Command%20Line/run-script.html, а если вы используете более старую версию Grails, вы можете получить скрипт из http://naleid.com/blog/2010/12/03/grails-run-script-updated-for-grails-1-3-5/

0 голосов
/ 08 июля 2011

Вы можете загрузить класс напрямую, используя classLoader, как это ...

def dataRepo = classLoader.loadClass('path.to.DataRepository') 

Или вы также можете использовать ...

includeTargets << grailsScript('_GrailsBootstrap') 

Который должен загружать всех вас участников.

...