我试图用Intellij调试Grails项目(来自另一个开发人员),并遇到以下错误:
ERROR org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener - Error initializing
the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization
of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'transactionManager': Cannot resolve reference to bean
'sessionFactory' while setting bean property 'sessionFactory'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'sessionFactory': Invocation of init method failed; nested exception is
java.lang.NoSuchMethodError:
org.hibernate.cfg.Configuration.setListener(Ljava/lang/String;Ljava/lang/Object;)V
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'transactionManagerPostProcessor': Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean
property 'sessionFactory'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'sessionFactory': Invocation of init method failed; nested exception is
java.lang.NoSuchMethodError:
org.hibernate.cfg.Configuration.setListener(Ljava/lang/String;Ljava/lang/Object;)V通过研究论坛,我怀疑加载器所指的是Hibernate-3中存在的类,而不是Hibernate-4中的类。我正在使用IntelliJ的Hibernate插件,但是我不明白为什么Hibernate-4会被加载。
然而,当我创建一个虚拟Grails应用程序时,我不会遇到这个错误。
有什么想法吗?
发布于 2015-01-13 13:03:04
原来我应该通过Intellij的对话框手动指定Hibernate的版本(在Mac上是通过文件->项目结构)。单击依赖项,您将看到如下所示:

如果双击Hibernate,您将看到如下内容:

在那里,单击“更改版本”并指定所需的库版本。
请注意,更改还要求我删除lib和目标文件夹,并重新运行IntelliJ才能生效。
发布于 2015-01-12 19:51:11
您需要运行grails dependency-report。它将生成如下所示的依赖关系报告。
+--- org.grails.plugins:hibernate:3.6.10.18
| \--- org.hibernate:hibernate-ehcache:3.6.10.Final
| \--- org.grails:grails-datastore-core:3.1.3.RELEASE
| \--- org.javassist:javassist:3.17.1-GA
| \--- javax.transaction:jta:1.1
| \--- org.grails:grails-datastore-gorm:3.1.3.RELEASE
| \--- org.grails:grails-datastore-gorm-hibernate:3.1.3.RELEASE
| \--- org.grails:grails-datastore-gorm-hibernate-core:3.1.3.RELEASE
| \--- org.grails:grails-datastore-gorm-plugin-support:3.1.3.RELEASE
| \--- org.springframework:spring-orm:4.0.7.RELEASE
| \--- org.grails:grails-datastore-simple:3.1.3.RELEASE
| \--- commons-collections:commons-collections:3.2.1
| \--- org.hibernate:hibernate-core:3.6.10.Final
| \--- javax.validation:validation-api:1.0.0.GA
| \--- org.hibernate:hibernate-validator:4.1.0.Final
| \--- org.hibernate:hibernate-entitymanager:3.6.10.Final
| \--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
+--- org.grails.plugins:database-migration:1.4.0
| \--- org.liquibase:liquibase-core:2.0.5
+--- org.apache.httpcomponents:httpclient:4.2.3
| \--- org.apache.httpcomponents:httpcore:4.2.2
| \--- commons-codec:commons-codec:1.6
+--- org.apache.httpcomponents:httpmime:4.2.3这将列出您的项目正在使用的所有退步。搜索hibernate4,看看你的插件是否指的是hibernate4。删除或升级插件以使用hibernate3。
https://stackoverflow.com/questions/27906702
复制相似问题