2016-04-05 6 views
0

Ich versuche Annotationsklassen nach Unterklasse LocalSessionFactoryBean zu setzen.
Bean Xml ist in Ordnung mit Hibernate 3 geladen, bis ich in Hibernate 4-Paket wechseln. Ich habe diesen Fehler:Eclipse RCP Spring 3 Hibernate 4-Klasse Ladeproblem

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 

Mein 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 Klasse setAnnotationClass Entitätsklassen. Was habe ich hier falsch gemacht?

Antwort

0

Stellen Sie sicher, dass Ihr Paket das Paket org.hibernate importiert. Dies wurde für Hibernate 3.x möglicherweise nicht benötigt.

In Ihrer MANIFEST.MF fügen Sie org.hibernate zur Import-Package: Sektion hinzu.

+0

Danke. Ich habe bereits ein anderes Paket importiert, das org.hibernate importiert hat und mit visibility: = reexport. so org.hibernate sollte da sein. Es muss möglicherweise etwas mit dem Klassenladeprogramm für die Bean ClassPathXmlApplicationContext(), die ich zum Laden der Beans verwendet habe, durchgeführt werden. – Springgrass

+1

Ok, nachdem ich das Hinzufügen von Eclipse-BuddyPolicy geändert habe: registriert, ext, global auf org.hibernate Paket MANIFEST.MF, ich habe keine Klasse nicht gefunden Fehler. Obwohl ich ein Problem mit dem Mapping hatte. Irgendwie funktioniert die Annotationsbindung bei der Vererbung nicht, auch nicht mit @MappedSuperclass. – Springgrass