2015-12-28 2 views
0

Я пытался создать проект spring-mvc без web.xml При запуске приложения на сервере он сделал следующее исключение в sessionFactory.Ошибка создания bean с именем «sessionFactory», определенным в ресурсе пути класса

Моего AppConfig.class заключается в следующем, который используется для инициализации единицы сохранения:

package com.myapp; 

import java.util.Properties; 

import org.apache.commons.dbcp.BasicDataSource; 
import org.hibernate.SessionFactory; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.JstlView; 

@EnableWebMvc 
@Configuration 
@ComponentScan(basePackages="com.myapp") 
@EnableTransactionManagement 
public class AppConfig { 

@Bean 
public SessionFactory sessionFactory() { 
    LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource()); 
    builder 
     .scanPackages("com.myapp.model") 
     .addProperties(getHibernateProperties()); 

    return builder.buildSessionFactory(); 
} 

private Properties getHibernateProperties() { 
    Properties prop = new Properties(); 
    prop.put("hibernate.format_sql", "true"); 
    prop.put("hibernate.show_sql", "true"); 
    prop.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); 
    return prop; 
} 

@Bean(name = "dataSource") 
public BasicDataSource dataSource() { 

    BasicDataSource ds = new BasicDataSource(); 
    ds.setDriverClassName("com.mysql.jdbc.Driver"); 
    ds.setUrl("jdbc:mysql://localhost:3306/eventtracker"); 
    ds.setUsername("root"); 
    ds.setPassword("root"); 
    return ds; 
} 

@Bean 
public HibernateTransactionManager txManager() { 
    return new HibernateTransactionManager(sessionFactory()); 
} 

@Bean 
public InternalResourceViewResolver viewResolver() { 
    InternalResourceViewResolver viewResolver = new  InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/pages/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 
} 

И бросает исключение:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [com/myapp/AppConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.hibernate.SessionFactory]: Factory method 'sessionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/transaction/SystemException

+0

'java.lang.NoClassDefFoundError: javax/транзакции/SystemException' – sidgate

ответ

0

Взгляни на последнее исключение.

nested exception is java.lang.NoClassDefFoundError: javax/transaction/SystemException 

Это означает, что файл класс javax/transaction/SystemException не на пути к классам, таким образом жалуется JVM NoClassDefFoundError

Положите все вашу спящую связанную банку на пути к классам.

0

Это проблема выпуска Hibernate 5.0.6 для Hibernate 5.0.3. Все работает нормально. Для устранения проблемы добавьте в pom.xml (если вы используете Maven)

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

для Gradle построить

compile group: 'javax.transaction', name: 'transaction-api', version: '1.1' 

мануалов

http://central.maven.org/maven2/javax/transaction/transaction-api/1.1/transaction-api-1.1.jar

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

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