16

春と休止状態の統合をテストしようとすると、以下の例外が発生します。

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 を使用する必要があると言う人もいました。私はそれをしました。しかし、それでも同じ例外が発生します。

ここで何が欠けているかを特定するのを手伝ってくれる人はいますか。

ありがとう

4

7 に答える 7

6

注 : org.hibernate.cache.Provider は、Hibernate 3 から Hibernate 4 への変更で削除されました。

hibernate 3 を使用している場合は、java.lang.ClassNotFoundException: org.hibernate.cache.CacheProvider. hibernate 4 に変更すると、それは得られませんが、最初に and を追加する必要がhibernate4.jarありspring-orm.jarます。

于 2012-12-13T12:41:56.467 に答える
2

プロジェクトのセットアップで休止状態の依存関係が欠落しているように思えます:

原因: java.lang.ClassNotFoundException: org.hibernate.cache.CacheProvider

hibernate-core.jarをダウンロードして、プロジェクトのクラスパスに追加してみてください。

Maven を使用する場合は、プロジェクトの pom.xml に次の依存関係を追加するだけです。

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

それが役立つことを願っています。

于 2012-08-15T23:25:47.387 に答える
-1

この解決策は私にとってもうまくいきました:

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

私の場合、すでに hibernate-entitymanager 依存関係がありましたが、hibernate の最新バージョンである 4.3.1.Final を使用しようとしていました。ここでダウングレードが必要な理由はわかりませんが、STS 3.5.0.M2 に基づいていた「Simple Spring JPA Utility Project」も少し古くなっている可能性がありますか?

于 2014-03-23T18:35:57.753 に答える
-2

Maven を使用している場合は、これを POM ファイルに入れてみてください。

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

それは私のために働いた。

于 2013-12-12T22:26:33.283 に答える