2016-01-14 6 views
1

Моего POM
Я получаю эту ошибку wheni создания Hibernate Session Bean Ошибки создания боба с именем 'SessionFactory', определенные в ServletContext ресурсе [/ WEB-INF/весна/Root- context.xml]: вызов метода init не выполнен; вложенное исключение составляет java.lang.NoClassDefFoundError: javax/сделка/SystemExceptionSpring MVC, когда я создать компонент для Hibernate Session Factory

<dependencies> 
      <!-- Spring --> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
       <version>${org.springframework-version}</version> 
       <exclusions> 
        <!-- Exclude Commons Logging in favor of SLF4j --> 
        <exclusion> 
         <groupId>commons-logging</groupId> 
         <artifactId>commons-logging</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-webmvc</artifactId> 
       <version>${org.springframework-version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-tx</artifactId> 
       <version>${org.springframework-version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-orm</artifactId> 
       <version>${org.springframework-version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-jdbc</artifactId> 
       <version>${org.springframework-version}</version> 
      </dependency> 
      <!-- AspectJ --> 
      <dependency> 
       <groupId>org.aspectj</groupId> 
       <artifactId>aspectjrt</artifactId> 
       <version>${org.aspectj-version}</version> 
      </dependency> 

      <!-- Logging --> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>${org.slf4j-version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>jcl-over-slf4j</artifactId> 
       <version>${org.slf4j-version}</version> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
       <version>${org.slf4j-version}</version> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.15</version> 
       <exclusions> 
        <exclusion> 
         <groupId>javax.mail</groupId> 
         <artifactId>mail</artifactId> 
        </exclusion> 
        <exclusion> 
         <groupId>javax.jms</groupId> 
         <artifactId>jms</artifactId> 
        </exclusion> 
        <exclusion> 
         <groupId>com.sun.jdmk</groupId> 
         <artifactId>jmxtools</artifactId> 
        </exclusion> 
        <exclusion> 
         <groupId>com.sun.jmx</groupId> 
         <artifactId>jmxri</artifactId> 
        </exclusion> 
       </exclusions> 
       <scope>runtime</scope> 
      </dependency> 

      <!-- @Inject --> 
      <dependency> 
       <groupId>javax.inject</groupId> 
       <artifactId>javax.inject</artifactId> 
       <version>1</version> 
      </dependency> 

      <!-- Servlet --> 
      <dependency> 
       <groupId>javax.servlet</groupId> 
       <artifactId>servlet-api</artifactId> 
       <version>2.5</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>javax.servlet.jsp</groupId> 
       <artifactId>jsp-api</artifactId> 
       <version>2.1</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>javax.servlet</groupId> 
       <artifactId>jstl</artifactId> 
       <version>1.2</version> 
      </dependency> 

      <!-- Test --> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>4.7</version> 
       <scope>test</scope> 
      </dependency> 
      <dependency> 
       <groupId>mysql</groupId> 
       <artifactId>mysql-connector-java</artifactId> 
       <version>5.1.6</version> 
      </dependency> 

      <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-core</artifactId> 
       <version>5.0.6.Final</version> 
      </dependency> 
      <dependency> 
       <groupId>org.hibernate.javax.persistence</groupId> 
       <artifactId>hibernate-jpa-2.0-api</artifactId> 
       <version>1.0.1.Final</version> 
      </dependency> 

      <dependency> 
       <groupId>javassist</groupId> 
       <artifactId>javassist</artifactId> 
       <version>3.12.1.GA</version> 
      </dependency> 
      <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-dbcp</artifactId> 
     <version>8.0.29</version> 
    </dependency> 

     </dependencies> 

My Spring Configuration File

<bean id="myDataSource" class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource" 
     destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/study" /> 
     <property name="username" value="root" /> 
     <property name="password" value="" /> 
     <property name="validationQuery" value="SELECT 1" /> 
    </bean> 

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource" /> 
     <property name="packagesToScan" value="com.aquicktrack.com.entities" /> 
     <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
     </props> 
     </property> 
    </bean> 

Ошибка

INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started 
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Thu Jan 14 12:36:41 IST 2016]; root of context hierarchy 
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml] 
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' 
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/SystemException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:684) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4729) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586) 
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1750) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.jboss.logging.Logger$1.run(Logger.java:2554) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2529) 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2516) 
    at org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:28) 
    at org.hibernate.internal.CoreLogging.messageLogger(CoreLogging.java:24) 
    at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:86) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:324) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    ... 25 more 
Caused by: java.lang.ClassNotFoundException: javax.transaction.SystemException 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166) 
    ... 37 more 

ответ

2

Это происходит из-за missign JTA библиотеки оных ниже зависимости от вашего pom.xml. и это может решить проблему:

<dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>jta</artifactId> 
    <version>1.1</version> 
</dependency> 

Изменение ниже зависимостей

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.1.Final</version> 
</dependency> 

с

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.1-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 

и изменять конфигурации использовать спящий режим JPA 2.1.

+0

Теперь Ошибка изменяется орг. springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем sessionFactory, определенным в ресурсе ServletContext [/ WEB-INF/spring/root-context.xml]: вызов метода init не удался; Вложенное исключение - java.lang.NoSuchMethodError: javax.persistence.Table.indexes() [Ljavax/persistence/Index; –

+0

Не забудьте ознакомиться с моим обновленным ответом –

1

Я думаю, что вы пропустите JTA, зависимость, попробуйте добавить:

<dependencies> 
    <dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>jta</artifactId> 
    <version>1.1</version> 
</dependency> 

к вашим зависимостями Maven.


Фиксирующие java.lang.NoSuchMethodError: javax.persistence.Table.indexes() ошибка:

Изменить

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 

Для

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.1-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
+0

Теперь Ошибка изменена org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем sessionFactory, определенным в ресурсе ServletContext [Invision:] метода init не удалось; Вложенное исключение - java.lang.NoSuchMethodError: javax.persistence.Table.indexes() [Ljavax/persistence/Index; –

+0

Я думаю, что у вас есть некоторые конфликты зависимости в вашем проекте с JPA. javax.persistence.Table.indexes() включен в версию JPA 2.1, и у вас есть зависимость 2.0, попробуйте изменить на hibernate-jpa-2.1-api в зависимости org.hibernate.javax.persistence – alvgarvilla

Смежные вопросы