복붙노트

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

SPRING

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

나는 이미 작동중인 봄 프로젝트를 최대 절전 모드로 통합하려고 노력하고 있는데, 이것은 시작시에 발생하는 오류입니다.

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)

나는 그것을 봤지만 모두 내가 찾을 수있는 비슷한 문제는 클래스 패스에서 중복으로 인해 발생했다지만 난 아주 밀접하게 보였습니다 그리고 난 내 classpath에 어떤 중복 있다고 생각하지 않습니다. (나는 틀릴 수도 있습니다.) 내 classpath에 jar의 스크린 샷이 있습니다.

내가 붙어있어, 어떤 도움을 크게 주시면 감사하겠습니다

편집 : org.hibernate.SessionFactory 검색에 대한 검색

해결법

  1. ==============================

    1.문제는 클래스 패스에 hibernate-core-4.0.0.Final.jar이 있지만, Spring 3.1은 hibernate-core-3.6.0.Final.jar을 사용한다는 것입니다 (Spring 3.1 아티팩트 및 의존성 참조).

    문제는 클래스 패스에 hibernate-core-4.0.0.Final.jar이 있지만, Spring 3.1은 hibernate-core-3.6.0.Final.jar을 사용한다는 것입니다 (Spring 3.1 아티팩트 및 의존성 참조).

    Hibernate 4.0을 삭제하고 클래스 패스에 Hibernate 3.6을 넣는다.

    BTW, 그런 이상한 경기가있을 수 있습니다. 의존성을 돌보는 데 maven을 사용하는 것이 좋습니다.

    수정 - 자세한 내용

    Hibernate 3.6에서 인터페이스 Session은 org.hibernate.classic 패키지에 있었지만 Hibernate 4.0에서는 org.hibernate 패키지로 옮겨졌다.

    Hibernate 3.6에서 SessionFactory.openSession은 더 이상 org.hibernate.classic.Session을 반환하지 않고 오히려 org.hibernate.Session을 리턴한다. 이것은 클라이언트 코드를 깨뜨리는 리팩터링입니다 ...

  2. ==============================

    2.비슷한 종류의 문제가있었습니다. 다른 버전의 apache-camel-extra를 사용하여 문제를 해결했습니다.

    비슷한 종류의 문제가있었습니다. 다른 버전의 apache-camel-extra를 사용하여 문제를 해결했습니다.

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

    애플리케이션 설정

    gradle
    apache-camel
    spring
    hibernate
    spring-jta and atomikos 
    
  3. from https://stackoverflow.com/questions/8799121/java-lang-nosuchmethoderror-org-hibernate-sessionfactory-opensessionlorg-hibe by cc-by-sa and MIT license