web-dev-qa-db-fra.com

java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession () Lorg/hibernate/classic/Session

j'essaie d'intégrer mon projet de printemps déjà opérationnel avec hibernate, mais c'est l'erreur que je commence à démarrer.

EVERE: Servlet.service() for servlet [appServlet] in context with path [/TelephoneDirectory] threw exception [Handler processing failed; nested exception is Java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;] with root cause
Java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
    at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.Java:322)
    at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.Java:233)
    at org.springframework.orm.hibernate3.HibernateTemplate.getSession(HibernateTemplate.Java:457)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.Java:393)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.Java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.Java:912)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.Java:904)
    at com.emumba.telephonedirectory.repository.JdbcPersonDao.getPersonsList(JdbcPersonDao.Java:36)
    at com.emumba.telephonedirectory.service.SimpleDirectoryManager.getAllPersons(SimpleDirectoryManager.Java:23)
    at com.emumba.telephonedirectory.web.HomeController.home(HomeController.Java:42)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.Java:212)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.Java:126)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.Java:96)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.Java:617)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.Java:578)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.Java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.Java:900)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.Java:827)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.Java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.Java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:305)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:224)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:169)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:472)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:168)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:98)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:928)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:407)
    at org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:987)
    at org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:539)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:300)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

Je l'ai googlé, mais tout ce que j'ai pu trouver, c'est que des problèmes similaires ont été causés par des doublons dans Classpath, mais j'ai examiné de très près et je ne pense pas qu'il existe des doublons dans mon classpath. (Peut-être que je me trompe.) Voici une capture d'écran de pots dans mon classpathenter image description here

je suis coincé, toute aide sera grandement appréciée

EDIT: Recherche pour org.hibernate.SessionFactory donne

enter image description here

21
khizar

Le problème est que vous avez hibernate-core-4.0.0.Final.jar dans votre chemin de classe, mais Spring 3.1 utilise hibernate-core-3.6.0.Final.jar (voir ici Artefact et dépendances de Spring 3.1).

Supprimez Hibernate 4.0 et mettez Hibernate 3.6 à la place dans votre chemin de classe. 

BTW, il pourrait y avoir quelques-uns de ces matchs manqués. Il est préférable d'utiliser Maven pour prendre en charge les dépendances.

EDIT - quelques détails supplémentaires

Dans Hibernate 3.6, l'interface Session était dans le package org.hibernate.classic, alors que dans Hibernate 4.0, elle était déplacée dans le package org.hibernate.

Dans Hibernate 3.6, le SessionFactory.openSession ne renvoie plus un org.hibernate.classic.Session, mais plutôt un org.hibernate.Session. Ceci est un refactor qui casse le code client ...

34
yair

J'avais le même genre de problème; utilisé une version différente d'Apache-camel-extra pour résoudre le problème

compile group: 'org.Apache-extras.camel-extra', name: 'camel-hibernate', version: '2.18.0'

Notre configuration d'application

gradle
Apache-camel
spring
hibernate
spring-jta and atomikos 
0
aamir