복붙노트

[SPRING] java.lang.ClassNotFoundException : 스프링과 하이버 레이트를 통합하면서 org.hibernate.cache.CacheProvider 예외

SPRING

java.lang.ClassNotFoundException : 스프링과 하이버 레이트를 통합하면서 org.hibernate.cache.CacheProvider 예외

내가 봄과 최대 절전 모드 통합을 테스트하려고 할 때 아래 예외가 발생합니다.

Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.CacheProvider
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 18 more
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans     
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:annotation-config/>

<!-- Datasource beans -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="url"  value="jdbc:mysql://localhost:3306/sterlingschema" />
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="username" value="root" />
  <property name="password" value="root" />
</bean>

<!--  Hibernate Template session factory bean -->
 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
       <props>
           <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
           <prop key="show_sql">true</prop>
           <prop key="hibernate.hbm2ddl.auto">update</prop>
       </props>
    </property>

    <property name="mappingResources">
       <list>
           <value>/org/droidaceapps/domain/users.hbm.xml</value>
       </list>
     </property>

</bean> 

<!--  Hibernate template beans -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"></property>
</bean>


<!--  DAO beans -->

<bean id="userDAO"  class="org.droidaceapps.dao.UserDAOImpl">
  <property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>

<!--  Service beans -->

<bean id="userService"  class="org.droidaceapps.services.UserServiceImpl">
    <property name="userDAO" ref="userDAO" />
</bean> 

내가이 문제에 대해봤을 때, 우리는 springframework.orm.hibernate3 대신에 springframework.orm.hibernate4를 사용해야한다고 말했습니다. 내가 그거 했어. 하지만 여전히 동일한 예외가 발생합니다.

누군가 나를 도울 수 있습니까? 여기에 무엇이 빠졌는지 확인하십시오.

감사

해결법

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

    1.주의 : Hibernate 3에서 Hibernate 4 로의 변경에서 org.hibernate.cache.Provider가 제거되었다.

    주의 : Hibernate 3에서 Hibernate 4 로의 변경에서 org.hibernate.cache.Provider가 제거되었다.

    Hibernate 3을 사용한다면 java.lang.ClassNotFoundException : org.hibernate.cache.CacheProvider를 얻을 수있다. 만약 당신이 최대 절전 모드 4로 변경한다면, 당신은 그것을 얻지 못할 것이다. 그러나 먼저 hibernate4.jar와 spring-orm.jar를 추가해야한다.

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

    2.프로젝트 설정에서 최대 절전 모드 종속성이 누락 된 것처럼 들립니다.

    프로젝트 설정에서 최대 절전 모드 종속성이 누락 된 것처럼 들립니다.

    hibernate-core.jar를 다운로드하고 프로젝트 classpath에 추가하십시오.

    Maven을 사용하는 경우 프로젝트의 pom.xml에 다음 종속성을 추가하기 만하면됩니다.

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>${hibernate.version}</version>
    </dependency>
    

    희망이 도움이됩니다.

  3. ==============================

    3.당신은 HibernateTemplate 대신 DAO 클래스에 HibernateTransactionManager를 주입하고있다. 파일 구성을 확인하십시오.

    당신은 HibernateTemplate 대신 DAO 클래스에 HibernateTransactionManager를 주입하고있다. 파일 구성을 확인하십시오.

  4. ==============================

    4.이 솔루션은 나를 위해 일했습니다.

    이 솔루션은 나를 위해 일했습니다.

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.6.10.Final</version>
    </dependency>
    

    필자는 이미 hibernate-entitymanager 의존성을 가지고 있었지만 최신 버전의 최대 절전 모드 4.3.1을 사용하려고 시도했다. 최종. 다운 그레이드가 필요한 이유는 확실치 않지만 STS 3.5.0에서 출발 한 "단순한 스프링 JPA 유틸리티 프로젝트"가있을 가능성이 있습니다. 약간의 일자가 있습니까?

  5. ==============================

    5.봄 구성 파일에서 변경해야합니다. 변경 :

    봄 구성 파일에서 변경해야합니다. 변경 :

    HibernateTemplate 클래스를 "org.springframework.orm.hibernate3.HibernateTemplate"  , 변경 :

    LocalSessionFactoryBean 빈을 "org.springframework.orm.hibernate3.LocalSessionFactoryBean"으로 설정하십시오.

    그것은 효과가있을 것이다.

  6. ==============================

    6.이것은 Spring 설정 파일의 "sessionFactory"에 "org.springframework.orm.hibernate4.LocalSessionFactoryBean"대신 "org.springframework.orm.hibernate3.LocalSessionFactoryBean"을 사용하기 때문일 수 있습니다.

    이것은 Spring 설정 파일의 "sessionFactory"에 "org.springframework.orm.hibernate4.LocalSessionFactoryBean"대신 "org.springframework.orm.hibernate3.LocalSessionFactoryBean"을 사용하기 때문일 수 있습니다.

  7. ==============================

    7.Maven을 사용하는 경우 POM 파일에 다음과 같이 입력 해보십시오.

    Maven을 사용하는 경우 POM 파일에 다음과 같이 입력 해보십시오.

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.6.10.Final</version>
    </dependency>
    

    그것은 나를 위해 일했다.

  8. from https://stackoverflow.com/questions/11978094/java-lang-classnotfoundexception-org-hibernate-cache-cacheprovider-exception-wh by cc-by-sa and MIT license