Java 在Grails 3.2.4中使用Hibernate 4时启动时出现NullPointerException

Java 在Grails 3.2.4中使用Hibernate 4时启动时出现NullPointerException,java,hibernate,grails,groovy,gorm,Java,Hibernate,Grails,Groovy,Gorm,我按照中的说明从hibernate 5(默认设置)切换到hibernate 4。但是,现在我的应用程序无法启动。我在启动时遇到如下所示的异常 01/12/2017 11:52:55 PST ERROR main SpringApplication:839 - Application startup failed java.lang.NullPointerException: null at java.beans.Introspector.getPublicDeclaredMethods(

我按照中的说明从hibernate 5(默认设置)切换到hibernate 4。但是,现在我的应用程序无法启动。我在启动时遇到如下所示的异常

01/12/2017 11:52:55 PST ERROR main SpringApplication:839 - Application startup failed
java.lang.NullPointerException: null
    at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1337)
    at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
    at java.beans.Introspector.getBeanInfo(Introspector.java:426)
    at java.beans.Introspector.getBeanInfo(Introspector.java:173)
    at java.beans.Introspector.getBeanInfo(Introspector.java:260)
    at java.beans.Introspector.<init>(Introspector.java:407)
    at java.beans.Introspector.getBeanInfo(Introspector.java:173)
    at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3290)
    at java.security.AccessController.doPrivileged(Native Method)
    at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3288)
    at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3265)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:254)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:285)
    at org.codehaus.groovy.runtime.callsite.ClassMetaClassGetPropertySite.<init>(ClassMetaClassGetPropertySite.java:38)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.createClassMetaClassGetPropertySite(AbstractCallSite.java:373)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.createGetPropertySite(AbstractCallSite.java:325)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.acceptGetProperty(AbstractCallSite.java:312)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
    at org.grails.plugins.databasemigration.DatabaseMigrationGrailsPlugin.configureLiquibase(DatabaseMigrationGrailsPlugin.groovy:96)
    at org.grails.plugins.databasemigration.DatabaseMigrationGrailsPlugin.doWithSpring(DatabaseMigrationGrailsPlugin.groovy:55)
    at org.grails.plugins.DefaultGrailsPlugin.doWithRuntimeConfiguration(DefaultGrailsPlugin.java:555)
    at org.grails.plugins.AbstractGrailsPluginManager.doRuntimeConfiguration(AbstractGrailsPluginManager.java:167)
    at grails.boot.config.GrailsApplicationPostProcessor.postProcessBeanDefinitionRegistry(GrailsApplicationPostProcessor.groovy:171)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)  
01/12/2017 11:52:55 PST错误主SpringApplication:839-应用程序启动失败
java.lang.NullPointerException:null
位于java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1337)
位于java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
位于java.beans.Introspector.getBeanInfo(Introspector.java:426)
位于java.beans.Introspector.getBeanInfo(Introspector.java:173)
位于java.beans.Introspector.getBeanInfo(Introspector.java:260)
位于java.beans.Introspector(Introspector.java:407)
位于java.beans.Introspector.getBeanInfo(Introspector.java:173)
在groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3290)
位于java.security.AccessController.doPrivileged(本机方法)
位于groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3288)
在groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3265)上
位于org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:254)
位于org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:285)
位于org.codehaus.groovy.runtime.callsite.ClassMetaClassGetPropertySite。(ClassMetaClassGetPropertySite.java:38)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.createClassMetaClassGetPropertySite(AbstractCallSite.java:373)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.createGetPropertySite(AbstractCallSite.java:325)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.acceptGetProperty(AbstractCallSite.java:312)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
位于org.grails.plugins.databasemigration.DatabaseMigrationGrailsPlugin.configureLiquibase(databasemigrailsplugin.groovy:96)
位于org.grails.plugins.databasemigration.databasemigrailsplugin.doWithSpring(databasemigrailsplugin.groovy:55)
位于org.grails.plugins.DefaultGrailsPlugin.doWithRuntimeConfiguration(DefaultGrailsPlugin.java:555)
位于org.grails.plugins.AbstractGrailsPluginManager.doRuntimeConfiguration(AbstractGrailsPluginManager.java:167)
位于grails.boot.config.GrailsApplicationPostProcessor.postProcessBeanDefinitionRegistry(GrailsApplicationPostProcessor.groovy:171)
位于org.springframework.context.support.postprocessorregistrationlegate.invokeBeanFactoryPostProcessors(postprocessorregistrationlegate.java:118)
位于org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
位于org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:315)

一些快速的谷歌搜索似乎暗示这个错误是由项目依赖项中的某些不匹配引起的。然而,Grails3.2文档只提到添加Hibernate4依赖项,而没有更改任何其他依赖项。有人知道这里发生了什么以及如何修复吗?

首先使用-

grails clean --refresh-dependencies
使用以下命令生成依赖项报告-

grails dependency-report

确认应用程序正在使用hibernate 4依赖项。了解hibernate 5依赖项是否正从其任何插件中使用。如果是这样,请将其从相应插件的build.gradle文件中排除。

然后尝试
grails run app
。事实证明,我使用的数据库迁移插件版本依赖于hibernate 5,并引入了与我使用hibernate 4不匹配的依赖项。我将与Grails3和Hibernate4一起使用的数据库迁移插件的版本降低到了2.0.0(根据这里的文档:),这就成功了。谢谢很高兴我能帮忙。