当我试图运行我的web应用程序时,我遇到了这个错误:
2015年12月24日13:42:38错误:org.springframework.web.context.ContextLoader-上下文初始化失败的org.springframework.beans.factory.BeanCreationException:错误正在创建在类中定义了名称为"entityManagerFactory"的beancom.noi.metrina.config.DataSourceConfig:调用init方法失败;嵌套异常为java.lang.AbstractMethodErrororg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)在org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)在org.springframework.context.support.AbstractApplicationContext.finishBeanFactory初始化(AbstractApplicationContext.java:829)在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4729)在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586)在org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1750)在java.util.concurrent.Executors$RunnableAdapter.call(Executitors.java:471)位于java.util.concurrent.FFutureTask.run(FutureTask.java:262)java.util.concurrent.ThreadPoolExecutiator.runWorker(ThreadPoolExecutiator.java:1145)在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java:745)由以下原因引起:java.lang.AbstractMethodError位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:278)在org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilder Impl.java:444)在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBBuilderImpl.java:802)在org.springframework.om.jpa.vendor.SpringHibernate JpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernate jpa PersistenceProvider.java:60)在org.springframework.om.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManager FactoryBean.java:343)在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory:java:1637)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)…再增加25个
这是我的pom.xml
:
<org.springframework-version>4.2.4.RELEASE</org.springframework-version>
<hibernate.version>5.0.5.Final</hibernate.version>
<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-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</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-context-support</artifactId>
<version>4.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
<exclusions>
<exclusion>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
pom有问题吗??
编辑此DataSourceConfig:
Configuration
@EnableJpaAuditing
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = { "com.noi.vetrina.repository" })
@Import({ DataSourceDevConfig.class, DataSourceProdConfig.class })
@PropertySource("classpath:/META-INF/persistence_mysql.properties")
public class DataSourceConfig {
private static final String DB_TYPE = "mysql_";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
private static final String PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO = "hibernate.hbm2ddl.auto";
private static final String PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY = "hibernate.ejb.naming_strategy";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = DB_TYPE + "entitymanager.packages.to.scan";
@Resource
private Environment environment;
@Resource(name = "mysql")
private DataSource dataSource;
/**
* Configures the transaction manager.
*
* @return
* @throws ClassNotFoundException
*/
@Bean
@Primary
public JpaTransactionManager transactionManager() throws ClassNotFoundException {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
/**
* Configures the entity manager factory.
*
* @return
* @throws ClassNotFoundException
*/
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ClassNotFoundException {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
String pack = environment.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN);
entityManagerFactoryBean.setPackagesToScan(pack);
entityManagerFactoryBean.setPersistenceUnitName("persistenceUnit");
Properties jpaProterties = new Properties();
jpaProterties.put(PROPERTY_NAME_HIBERNATE_DIALECT, environment.getRequiredProperty(DB_TYPE + PROPERTY_NAME_HIBERNATE_DIALECT));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, environment.getRequiredProperty(DB_TYPE + PROPERTY_NAME_HIBERNATE_FORMAT_SQL));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO, environment.getRequiredProperty(DB_TYPE + PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY, environment.getRequiredProperty(DB_TYPE + PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, environment.getRequiredProperty(DB_TYPE + PROPERTY_NAME_HIBERNATE_SHOW_SQL));
jpaProterties.put("hibernate.max_fetch_depth", 3);
jpaProterties.put("hibernate.jdbc.fetch_size", 50);
jpaProterties.put("hibernate.jdbc.batch_size", 20);
jpaProterties.put("hibernate.format_sql", true);
jpaProterties.put("hibernate.show_sql", false);
jpaProterties.put("org.hibernate.envers.audit_table_suffix", "_H");
jpaProterties.put("org.hibernate.envers.revision_field_name", "AUDIT_REVISION");
jpaProterties.put("org.hibernate.envers.revision_type_field_name", "ACTION_TYPE");
jpaProterties.put("org.hibernate.envers.audit_strategy", "org.hibernate.envers.strategy.ValidityAuditStrategy");
jpaProterties.put("org.hibernate.envers.audit_strategy_validity_end_rev_field_name", "AUDIT_REVISION_END");
jpaProterties.put("org.hibernate.envers.audit_strategy_validity_store_revend_timestamp", "True");
jpaProterties.put("org.hibernate.envers.audit_strategy_validity_revend_timestamp_field_name", "AUDIT_REVISION_END_TS");
entityManagerFactoryBean.setJpaProperties(jpaProterties);
return entityManagerFactoryBean;
}
@Bean
public AuditorAware<String> auditorProvider() {
return new AuditorAwareBean();
}
}
我解决了降级hibernate版本的问题。。。我用的是4.3.11.决赛,它有效。。。