尝试使用hibernate 4创建SessionFactory时出现异常

时间:2012-09-27 11:33:59

标签: hibernate guice hibernate-search

我已从hibernate 3升级到hibernate 4。 但在尝试构建SessionFactory

配置配置=新配置(); sessionFactory = configuration.configure(“app.cfg.xml”)。buildSessionFactory();

我收到以下异常

guiceFilter失败了 java.util.ServiceConfigurationError:org.hibernate.integrator.spi.Integrator:Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator无法实例化:java.lang.ClassCastException:无法强制转换org.hibernate.search.hcore.impl .HibernateSearchIntegrator到org.hibernate.integrator.spi.Integrator     在java.util.ServiceLoader.fail(未知来源)     at java.util.ServiceLoader.access $ 100(未知来源)     at java.util.ServiceLoader $ LazyIterator.next(Unknown Source)     at java.util.ServiceLoader $ 1.next(Unknown Source)     在org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:251)     在org.hibernate.integrator.internal.IntegratorServiceImpl。(IntegratorServiceImpl.java:53)     在org.hibernate.service.internal.BootstrapServiceRegistryImpl。(BootstrapServiceRegistryImpl.java:80)     在org.hibernate.service.internal.BootstrapServiceRegistryImpl。(BootstrapServiceRegistryImpl.java:57)     在org.hibernate.service.ServiceRegistryBuilder。(ServiceRegistryBuilder.java:76)     在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1767)     在com.app.server.data.hibernate.SessionProvider.createSessionFactory(SessionProvider.java:55)     在com.app.server.data.hibernate.HibernateDataSourceConnector.init(HibernateDataSourceConnector.java:39)     在com.eng.server.services.ConfigurationServlet.init(ConfigurationServlet.java:42)     在com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:117)     在com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)     在com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)     在com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)     在org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)     在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     在org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)     在org.mortbay.jetty.servlet.Context.startContext(Context.java:140)     at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)     在org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)     在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)     在com.google.gwt.dev.shell.jetty.JettyLauncher $ WebAppContextWithReload.doStart(JettyLauncher.java:468)     在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)     在org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)     在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)     在org.mortbay.jetty.Server.doStart(Server.java:222)     在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     在com.google.gwt.dev.shell.jetty.JettyLauncher.start(DettyLauncher.java:672)     在com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)     在com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)     在com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)     在com.google.gwt.dev.DevMode.main(DevMode.java:311) 引起:java.lang.ClassCastException:无法将org.hibernate.search.hcore.impl.HibernateSearchIntegrator强制转换为org.hibernate.integrator.spi.Integrator     在java.lang.Class.cast(未知来源)     ......还有35个

以下是我项目中的罐子

antlr-2.7.7.jar
antlr.jar
aopalliance.jar
avro-1.5.1.jar
cglib-2.2.jar
commons-beanutils-1.8.2.jar
commons-collections-3.2.jar
commons-configuration-1.7.jar
commons-fileupload-1.2.jar
commons-io-1.3.1.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
gin-2.0.jar
guice-3.0.jar
guice-assistedinject-3.0.jar
guice-multibindings-3.0.jar
guice-servlet-3.0.jar
guice-throwingproviders-3.0.jar
gwt-servlet.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.3.Final.jar
hibernate-entitymanager-4.1.3.Final.jar
hibernate-search-engine-4.1.1.Final.jar
hibernate-search-orm-4.1.1.Final.jar
hibernate-validator-4.0.2.GA.jar
jackson-core-asl-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
javassist-3.4.GA.jar
javax.inject.jar
javax.persistence-2.0.0.jar
jboss-logging-3.1.0.GA.jar
jta-1.1.jar
log4j-1.2.15.jar
lucene-core-3.5.0.jar
mvp4g-1.4.0.jar
mysql-connector-java-5.1.18-bin.jar
paranamer-2.3.jar
slf4j-api-1.6.1.jar
slf4j-jcl-1.6.0.jar
snappy-java-1.0.1-rc3.jar

依赖关系是正确的还是我缺少什么?

1 个答案:

答案 0 :(得分:1)

Hibernate Search 4.1.1.Final的

org.hibernate.search.hcore.impl.HibernateSearchIntegrator 实现了Hibernate ORM的 org.hibernate.integrator.spi.Integrator v.4.1.3.Final

所以既然你的依赖关系看起来很完美,唯一的解释是你有一些重复的类定义。

我建议使用JBoss Tattletale扫描您的应用程序,这是一个漂亮的命令行工具,可以探索您的jar以查找重复项。

例如,您似乎有一个重复的 antlr