2014-10-08 54 views
1

我是hibernate的新手,我試圖在持久層中使用Hibernate構建一個JSF應用程序。這就是我獲得Session Factory的方式。如何解決java.lang.NoSuchMethodError:org.hibernate.integrator.internal.IntegratorServiceImpl

Configuration config = new Configuration().configure("hibernate.cfg.xml"); 
     StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(config.getProperties()); 
     factory = config.buildSessionFactory(ssrb.build()); 

但我在運行應用程序時出現以下錯誤。

Error Message: 
Caused by: java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;)V 
    at org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:247) 
    at org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:73) 
    at com.sherwin.j29.jpa.factory.JPASessionFactory.createSessionFactory(JPASessionFactory.java:19) 
    at com.sherwin.j29.jpa.factory.JPASessionFactory.getSessionFactory(JPASessionFactory.java:13) 
    at com.sherwin.j29.dao.WorkItemDAO.<init>(WorkItemDAO.java:24) 
    at com.sherwin.j29.dao.WorkItemDAO$Proxy$_$$_WeldClientProxy.<init>(WorkItemDAO$Proxy$_$$_WeldClientProxy.java) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:344) 
    at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) 
    at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:173) 
    at org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:341) 
    at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:237) 
    at org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:105) 
    at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:87) 
    at org.jboss.weld.bean.proxy.ClientProxyProvider.access$000(ClientProxyProvider.java:43) 
    at org.jboss.weld.bean.proxy.ClientProxyProvider$1.load(ClientProxyProvider.java:53) 
    at org.jboss.weld.bean.proxy.ClientProxyProvider$1.load(ClientProxyProvider.java:46) 
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589) 
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374) 
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337) 
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252) 

我正在使用hibernate 4.3.6。

請讓我知道如果我失去了一些東西。

+0

請檢查多個hibernate jar可能存在於您的庫中 – ashokhein 2014-10-09 05:24:24

+0

我已經包含了hibernate 4.3.6最終jar ..但是當我的jboss啓動時它顯示以下行。 08:39:31,473 INFO [org.hibernate.annotations.common.Version](ServerService線程池 - 48)HCANN000001:Hibernate Commons Annotations {4.0.1.Final-redhat-2} 08:39:31,491 INFO [org (服務器服務線程池 - 48)HHH000412:Hibernate Core {4.2.14.SP1-redhat-1} 08:39:31,494信息[org.hibernate.cfg.Environment](ServerService線程池 - 48)HHH000206:找不到hibernate.properties – Adwin 2014-10-09 12:47:48

+0

不確定從何處獲取hibernate核心4.2.14 SP1 – Adwin 2014-10-09 12:48:32

回答

0

確保您已從類路徑中刪除了以前的所有Hibernate版本。

在github上查看它,我不明白爲什麼會導致這種情況,除非由於版本衝突導致類加載器問題,因爲IntegratorServiceImpl存在於您正在使用的兩個版本中,這表明類加載器問題給我