[SPRING] java.lang.ClassNotFoundException : 스프링과 하이버 레이트를 통합하면서 org.hibernate.cache.CacheProvider 예외
SPRINGjava.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.주의 : 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.프로젝트 설정에서 최대 절전 모드 종속성이 누락 된 것처럼 들립니다.
프로젝트 설정에서 최대 절전 모드 종속성이 누락 된 것처럼 들립니다.
hibernate-core.jar를 다운로드하고 프로젝트 classpath에 추가하십시오.
Maven을 사용하는 경우 프로젝트의 pom.xml에 다음 종속성을 추가하기 만하면됩니다.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency>
희망이 도움이됩니다.
-
==============================
3.당신은 HibernateTemplate 대신 DAO 클래스에 HibernateTransactionManager를 주입하고있다. 파일 구성을 확인하십시오.
당신은 HibernateTemplate 대신 DAO 클래스에 HibernateTransactionManager를 주입하고있다. 파일 구성을 확인하십시오.
-
==============================
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.봄 구성 파일에서 변경해야합니다. 변경 :
봄 구성 파일에서 변경해야합니다. 변경 :
HibernateTemplate 클래스를 "org.springframework.orm.hibernate3.HibernateTemplate" , 변경 :
LocalSessionFactoryBean 빈을 "org.springframework.orm.hibernate3.LocalSessionFactoryBean"으로 설정하십시오.
그것은 효과가있을 것이다.
-
==============================
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.Maven을 사용하는 경우 POM 파일에 다음과 같이 입력 해보십시오.
Maven을 사용하는 경우 POM 파일에 다음과 같이 입력 해보십시오.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.6.10.Final</version> </dependency>
그것은 나를 위해 일했다.
from https://stackoverflow.com/questions/11978094/java-lang-classnotfoundexception-org-hibernate-cache-cacheprovider-exception-wh by cc-by-sa and MIT license