2016-04-05 8 views
0

サブクラスLocalSessionFactoryBeanでアノテーションクラスを設定しようとしています。
hibernate 4パッケージに変更するまで、Bean xmlはhibernate 3で正常にロードされます。Eclipse RCP Spring 3 Hibernate 4クラス読み込み問題

ClassPathXmlApplicationContext: Exception encountered during context initia 
lization - cancelling refresh attempt 

    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/HibernateException 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2595) 
    at java.lang.Class.getConstructor0(Class.java:2895) 
    at java.lang.Class.getDeclaredConstructor(Class.java:2066) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:7 
8) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapable 
BeanFactory.java:1032) 
    ... 18 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.HibernateException 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) 
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 24 more 

マイbean.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jms="http://www.springframework.org/schema/jms" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
       http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd 
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd" > 

    <!-- Transaction Manager Definition --> 
    <bean id = "transactionManager"  class = "org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name = "sessionFactory"  ref = "sessionFactory" /> 
    </bean> 


    <bean id="dataSource"   class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    </bean>  

    <bean id="sessionFactory"   class = "customSessionFactory"> 
     <property name="dataSource"   ref="dataSource" /> 
     <property name="hibernateProperties"> 
       <props> 
        <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.jdbc.batch_size">10000</prop> 
      <prop key="hibernate.show_sql">false</prop> 
      <!-- Cache Properties --> 
      <prop key="hibernate.cache.use_second_level_cache">false</prop> 
      <prop key="hibernate.cache.use_query_cache">false</prop> 
      <prop key="hibernate.generate_statistics">true</prop> 
      <prop key="hibernate.cache.use_structured_entries">true</prop> 
      <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop> 
      <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</prop> 
      <prop key="net.sf.ehcache.configurationResourceName">ehcache.xml</prop> 
       </props> 
      </property> 
    </bean> 

customSessionFactoryクラスsetAnnotationClassエンティティクラス私はこのエラーを得ました。 私はここで何が間違っていましたか?

答えて

0

バンドルがorg.hibernateパッケージをインポートしていることを確認してください。 これは、hibernate 3.xでは必須ではないかもしれません。

MANIFEST.MFにorg.hibernateからImport-Package:セクションを追加します。

+0

ありがとうございました。私はすでにorg.hibernateをインポートした別のバンドルを読み込み、visibility:= reexportでインポートしました。 org.hibernateがそこにあるはずです。 Beanをロードするために使用したBean ClassPathXmlApplicationContext()のクラスローダーで何かをしなければならないかもしれません。 – Springgrass

+1

私はorg.hibernateパッケージMANIFEST.MFのEclipse、BuddyPolicy:registered、ext、globalを変更した後、クラスが見つかりませんでした。私はマッピングに問題があります。どういうわけか@MappedSuperclassを使っても、継承のアノテーションバインディングは機能しません。 – Springgrass