2017-10-18 6 views
0

J'essaie d'exécuter un programme de base hibernate 5 en utilisant maven. Il donne une erreur lors de la création de l'objet Configuration. Qu'est-ce que je rate ? Obtenir l'erreur suivante:Causée par: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration.setConfigurers(java.util.List); nested exception is java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:661) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
    ... 132 more 
Caused by: java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration 
    at java.lang.J9VMInternals.prepareClassImpl(Native Method) 
    at java.lang.J9VMInternals.prepare(J9VMInternals.java:283) 
    at java.lang.Class.getDeclaredMethods(Class.java:994) 
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:865) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:796) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:544) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:447) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:423) 
    at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1177) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1068) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:618) 
    ... 134 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:600) 
    at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:243) 
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:786) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:764) 
    at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:134) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:741) 
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62) 
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58) 
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:741) 
    ... 153 more 

J'utilise

  • Spring 4
  • Mise en veille prolongée 5
  • Maven
  • RAD
  • Websphere Application servent

pom.xml

Voici la dépendance pom i ajouté pour le printemps 4 et Hibernate 5.

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>apache-log4j-extras</artifactId> 
    </dependency> 
    . 
    . 
    . 
    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.12.Final</version> 
    </dependency> 

dao-context.xml:

J'utilise le nom JNDI qui est configuré dans la console d'administration du serveur d'applications websphere en tant que source de données.

<!-- turn on spring transaction annotation --> 
<tx:annotation-driven transaction-manager="transactionManager"/> 

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

<!-- Session Factory --> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.pnc.wsp.bloa.entity" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 

<!-- dataSource configuration --> 
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="jdbc/bloaDB" /> 
    <property name="lookupOnStartup" value="false"/> 
    <property name="cache" value="true" /> 
    <property name="proxyInterface" value="javax.sql.DataSource" /> 
</bean> 

Ce sessionFactory est utilisé en classe Dao avec autowiring comme ci-dessous

@Autowired 
@Qualifier("sessionFactory") 
private SessionFactory sessionFactory; 
+0

probablement si vous partagez le POM et/ou comment avez-vous mettre en œuvre votre méthode de buildSessionFactory ainsi. –

+0

@Walter - J'ai modifié avec pom & xml snippet. – Mohan

Répondre

0

La version SpringORM que vous utilisez est .SO les versions 4.2.4 de base de mise en veille prolongée sont compatibles 5.0.5/4.3.11 /3.6.10

https://mvnrepository.com/artifact/org.springframework/spring-orm/4.2.4.RELEASE

+0

J'ai essayé avec toutes ces versions, j'ai toujours le même problème. Et je pensais en outre qu'il peut être dû à plus d'une version d'hibernate, mais j'ai seulement une version de noyau d'hibernate dans mon oreille. – Mohan