java.lang.NoClassDefFoundError:org/hibernate/engine/SessionFactoryImplementor,来自Spring 3.1.2/hibernate 4.1.7和Shards 3.0.0.Beta2
我正在使用Hibernate Core 4.1.7和Spring 3.1.2尝试一个简单的Hibernate shard示例(是的,奇怪,4年前发布的3.0.0.Beta2),并在会话工厂初始化期间遇到了这个问题:java.lang.NoClassDefFoundError:org/hibernate/engine/SessionFactoryImplementor,来自Spring 3.1.2/hibernate 4.1.7和Shards 3.0.0.Beta2,spring,hibernate,exception,maven,sharding,Spring,Hibernate,Exception,Maven,Sharding,我正在使用Hibernate Core 4.1.7和Spring 3.1.2尝试一个简单的Hibernate shard示例(是的,奇怪,4年前发布的3.0.0.Beta2),并在会话工厂初始化期间遇到了这个问题: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path res
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path resource [shardedspring-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.hibernate.SessionFactory it.sella.lab.crm.sys.persistence.ShardedSessionFactoryBuilder.createSessionFactory()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/engine/SessionFactoryImplementor
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1015)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at in.rixx.crm.model.Activity.<clinit>(Activity.java:17)
原因:org.springframework.beans.factory.BeanCreationException:创建类路径资源[shardespring config.xml]中定义的名为“mySessionFactory”的bean时出错:bean实例化失败;嵌套异常为org.springframework.beans.factory.BeanDefinitionStoreException:factory方法[public org.hibernate.SessionFactory it.sella.lab.crm.sys.persistence.ShardedSessionFactoryBuilder.createSessionFactory()]引发异常;嵌套的异常是java.lang.NoClassDefFoundError:org/hibernate/engine/SessionFactoryImplementor
位于org.springframework.beans.factory.support.ConstructorResolver.InstanceUsingFactoryMethod(ConstructorResolver.java:581)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1015)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:609)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)
位于in.rixx.crm.model.Activity。(Activity.java:17)
这就是我选择Spring和Hibernate的方式:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
org.hibernate
,我还切换到了org.springframework.orm.hibernate4.HibernateTransactionManager,用于bean“transactionmanager”——这没有帮助
Spring3.x和Hibernate4.x现在是否有任何功能上的变通方法?我看到您正在使用Hibernate4和Spring。因此,似乎是spring和hibernate的互兼容性问题。因此,请访问下面的网站,了解Hibernate4与spring的兼容性
否则,作为另一个选项,请尝试以下版本
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
org.hibernate
冬眠核心
3.3.1.GA
Hibernate core不需要任何注释的依赖关系。有些人会确保pom不依赖Hibernate注释或Hibernate common注释
我的工作pom如下。
<properties>
<spring.version>4.0.5.RELEASE</spring.version>
<junit.version>4.11</junit.version>
<jdk.version>1.6</jdk.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<!-- JSTL -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MYSQL dependency -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<!-- If using JPA (2), add: -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>
</dependencies>
4.0.5.1发布
4.11
1.6
朱尼特
朱尼特
3.8.1
测试
org.springframework
弹簧芯
${spring.version}
org.springframework
spring上下文
${spring.version}
org.springframework
弹簧网
${spring.version}
org.springframework
SpringWebMVC
${spring.version}
org.springframework
春季甲虫
${spring.version}
javax.servlet
servlet api
3.0-α-1
jstl
jstl
1.2
文件上传
文件上传
1.2.2
公地io
公地io
1.3.2
mysql
mysql连接器java
5.1.6
org.hibernate
冬眠核心
4.3.5.最终版本
org.slf4j
slf4j api
1.5.6
org.slf4j
slf4j-log4j12
1.5.6
c3p0
c3p0
0.9.1.2
org.javassist
javassist
3.18.1-GA
通过删除hibernate常见注释,我得到了不同的错误
java.lang.ClassNotFoundException:org.hibernate.engine.SessionFactoryImplementor
这是为了解决会话工厂和事务管理器之间的版本差异
下面是解决方案的链接
[
以上链接的解决方案:
为事务管理器和本地会话工厂bean使用正确版本的Hibernate
org.springframework.orm.hibernate3.HibernateTransactionManager
org.springframework.orm.hibernate3.LocalSessionFactoryBean
类路径:hibernate.cfg.xml
真的
我也面临着同样的问题,我搜索了一些其他网站,它帮助了我
让我来解决这个问题。我做错的是我使用的hibernate版本
4在maven中用于事务管理器,但在maven中我正在配置
版本3的hibernate事务管理器,即
不兼容。我像这样更改了spring配置文件
尝试以下答案:请在答案中包含解决方案,因为链接可能并不总是可用。
<beans:bean id="sessionFactory" name="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<beans:property name="configLocation">
<beans:value>classpath:hibernate.cfg.xml</beans:value>
</beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.show_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<beans:bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
<bean id="hibernateTransactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- <bean id="hibernateTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> -->