【问题标题】:Grails: 3.3.2: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the contextGrails:3.3.2:ApplicationEventMulticaster 未初始化 - 在通过上下文多播事件之前调用“刷新”
【发布时间】:2017-12-07 00:32:14
【问题描述】:

请勿将其标记为重复 我刚刚创建了一个新的 Grails 应用程序。我创建了一个新的域类和一个具有相应 gsp 视图的控制器。我在 application.yml 中添加了我的 jdbc 连接详细信息。当我运行它时,我得到以下问题:

objc[27382]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java (0x107fcf4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x1080bb4e0). One of the two will be used. Which one is undefined.
2017-12-07 15:14:06.838 ERROR --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Destroy method on bean with name 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor' threw an exception

java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4ebea12c: startup date [Thu Dec 07 15:14:02 PST 2017]; root of context hierarchy
        at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)
        at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)
        at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:961)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:83)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:387)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:374)
        at grails.boot.GrailsApp$run.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
        at ice_grailsapp.Application.main(Application.groovy:8)

2017-12-07 15:14:06.843 ERROR --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Destroy method on bean with name 'grailsApplicationPostProcessor' threw an exception

java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4ebea12c: startup date [Thu Dec 07 15:14:02 PST 2017]; root of context hierarchy
        at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)
        at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)
        at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:961)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:83)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:387)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:374)
        at grails.boot.GrailsApp$run.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
        at ice_grailsapp.Application.main(Application.groovy:8)

我的 build.gradle 具有所有默认依赖项。我刚刚添加了以下依赖项:

编译组:'mysql',名称:'mysql-connector-java',版本: '5.1.13' 编译组:'cglib',名称:'cglib',版本:'3.2.4' 编译组:'org.springframework',名称:'spring-jdbc',版本: '4.3.8.RELEASE'

我的域类名为 CUSTOMER.groovy

class CUSTOMER {

    String pk
    String SPN
    String CustomerPk

    static constraints = {
    }
}

我的数据库是 MYSQL,我只是想从名为 CUSTOMER 的表中读取数据。我是否需要映射域类中表中的每个字段?好心的建议

【问题讨论】:

  • 类似问题可以在这里找到“jira.spring.io/browse/SPR-16149
  • 这里没有足够的信息可以关闭。它说 ConfigurationPropertiesBindingPostProcessor 引发了异常,但您没有列出它
  • @JamesKleeh 。 : 更新了描述
  • CustomerPk 是一个类吗?如果是,请将“String CustomerPk”替换为“CustomerPk customerPk”。

标签: spring spring-boot grails grails-orm grails-2.0


【解决方案1】:

由于我是 grails 的新手,我发现很难理解这个错误。后来我意识到问题出在 GORM 类上。我试图连接到现有的 SQL 数据库并从这些表中检索数据。默认情况下,Grails 尝试映射 verison(field) 当 Grails 尝试连接到表时,它还尝试映射表中不存在的版本。通过指定表的 id(主键)并将版本称为 false。帮我解决了问题。以下是变化:

class CUSTOMER {

    String pk
    String spn
    String customerpk

    static mapping = {
        id name: 'customerpk'
        version false
        id generator: 'assigned'
    }

}

还要确保在 GORM 类中将表的主键作为 id 提及。 注意:有时抛出的错误信息最后会有一些细节,查看第一行并不总是有意义。

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多