Загрузка бобов из скрипта Grails - PullRequest
0 голосов
/ 13 марта 2012

Я запускаю скрипт grails для загрузки bean-компонента из приложения grails, однако, похоже, у меня проблема с зависимостями.Вот мой код:

import grails.spring.BeanBuilder
import org.springframework.context.ApplicationContext

target(main: "Script to load location information into Solr") {

println "Hello script"
def bb = new BeanBuilder()
ApplicationContext appContext = bb.createApplicationContext()
def service = appContext.getBean("solrjService")   
}

setDefaultTarget(main)

Когда я выполняю скрипт, я получаю следующую трассировку стека:

main:
Hello script
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
at org.slf4j.LoggerFactory.staticInitialize(LoggerFactory.java:83)
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:73)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
at grails.spring.BeanBuilder.<clinit>(BeanBuilder.java:84)

Любые идеи ??

Спасибо за ваше время

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Если вы читаете стек вызовов, это, очевидно, проблема с SLF4J.

См. http://slf4j.org/faq.html#IllegalAccessError

Похоже, вы смешиваете версии банок SLF4J и получаете конфликт.

Но, конечно, Берт прав: как только вы пройдете через это, вы обнаружите, что инициализировали свой ApplicationContext BeanBuilder без бинов.

1 голос
/ 14 марта 2012

Мне нужно было включить целевой _GrailsBootstrap, чтобы иметь возможность загружать мои бины http://grails.org/doc/latest/guide/commandLine.html#creatingGantScripts

includeTargets << grailsScript("_GrailsBootstrap")

target ('default': "Load Location Information to Solr Server") {

depends(configureProxy, packageApp, classpath, loadApp, configureApp)
def service = appCtx.getBean('solrjService')
println service.getLocationSuggestion("Barcelona")

}

Я запускаю скрипт по-своему (вот почему у меня возникла проблема с classpath)

grails run-script scripts/Myscript.groovy

Тогда я запускаю его так

grails Myscript.groovy

, и у меня нет проблем с classpath: D

спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...