找不到类AnnotationSessionFactoryBean

时间:2012-03-04 13:24:21

标签: spring hibernate

我得到了:

root cause

java.lang.ClassNotFoundException:
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
org.springframework.beans.factory.support.AbstractBeanDefinition.resolve

我搜索了互联网,大多数人发现那些遇到同样问题的人并没有在正确的地方找到合适的罐子。 如果我查看Tomcat中的WEB-INF / lib文件夹,我会得到以下列表:

-rw-r--r--  1 Jonas  admin   443432  3 mrt 16:48 antlr-2.7.6.jar
-rw-r--r--  1 Jonas  admin   445288 12 feb 18:47 antlr-2.7.7.jar
-rw-r--r--  1 Jonas  admin     4467 12 feb 18:43 aopalliance-1.0.jar
-rw-r--r--  1 Jonas  admin    43033  4 mrt 14:08 asm-3.1.jar
-rw-r--r--  1 Jonas  admin   278682  4 mrt 14:08 cglib-2.2.jar
-rw-r--r--  1 Jonas  admin   559366  4 mrt 14:08 commons-collections-3.1.jar
-rw-r--r--  1 Jonas  admin   575389 12 feb 18:47 commons-collections-3.2.1.jar
-rw-r--r--  1 Jonas  admin    60686  3 mrt 17:17 commons-logging-1.1.1.jar
-rw-r--r--  1 Jonas  admin   313898 12 feb 18:47 dom4j-1.6.1.jar
-rw-r--r--  1 Jonas  admin   365546  4 mrt 13:59 hibernate-annotations-3.5.6-Final.jar
-rw-r--r--  1 Jonas  admin    71283  4 mrt 13:59 hibernate-commons-annotations-3.2.0.Final.jar
-rw-r--r--  1 Jonas  admin    81271  3 mrt 20:15 hibernate-commons-annotations-4.0.1.Final.jar
-rw-r--r--  1 Jonas  admin  3123360  4 mrt 14:08 hibernate-core-3.6.10.Final.jar
-rw-r--r--  1 Jonas  admin  4317092  3 mrt 20:15 hibernate-core-4.1.0.Final.jar
-rw-r--r--  1 Jonas  admin   426671  4 mrt 14:08 hibernate-entitymanager-3.6.10.Final.jar
-rw-r--r--  1 Jonas  admin   476002  3 mrt 20:15 hibernate-entitymanager-4.1.0.Final.jar
-rw-r--r--  1 Jonas  admin   102661  3 mrt 20:15 hibernate-jpa-2.0-api-1.0.1.Final.jar
-rw-r--r--  1 Jonas  admin   633312  4 mrt 14:08 javassist-3.12.0.GA.jar
-rw-r--r--  1 Jonas  admin   648253  3 mrt 20:15 javassist-3.15.0-GA.jar
-rw-r--r--  1 Jonas  admin    60539  3 mrt 20:15 jboss-logging-3.1.0.CR2.jar
-rw-r--r--  1 Jonas  admin    11209  3 mrt 20:15 jboss-transaction-api_1.1_spec-1.0.0.Final.jar
-rw-r--r--  1 Jonas  admin    15071  4 mrt 14:08 jta-1.1.jar
-rw-r--r--  1 Jonas  admin    23445  4 mrt 13:59 slf4j-api-1.5.8.jar
-rw-r--r--  1 Jonas  admin    25496 12 feb 18:43 slf4j-api-1.6.1.jar
-rw-r--r--  1 Jonas  admin   331471  3 mrt 17:17 spring-aop-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin    53081  3 mrt 17:16 spring-asm-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   589824  3 mrt 17:17 spring-beans-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   831068  3 mrt 17:17 spring-context-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   107225  3 mrt 17:17 spring-context-support-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   449324  3 mrt 17:17 spring-core-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   176311  3 mrt 17:17 spring-expression-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   544291  3 mrt 17:17 spring-web-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   573701  3 mrt 17:16 spring-webmvc-3.1.1.RELEASE.jar
-rw-r--r--  1 Jonas  admin   109318 12 feb 18:46 xml-apis-1.0.b2.jar

所有需要的罐子都在那里。所以我不明白为什么我一直得到classNotFound Exception。

这是我的hibernate.hbm.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<!-- Hibernate session factory -->
<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

    <property name="dataSource">
        <ref bean="dataSource" />
    </property>

    <property name="hibernateProperties">
        <props>
            <prop     key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>

    <property name="annotatedClasses">
        <list>
            <value>org.geiregat.jonas.entity</value>
        </list>
    </property>

</bean>
</beans>

2 个答案:

答案 0 :(得分:6)

  

所有需要的罐子都在那里

不,他们不是。 AnnotationSessionFactoryBean位于spring-orm JAR,您没有。

GrepCode提供。

答案 1 :(得分:1)

你需要spring-orm.jar,因为skaffman写得正确。但是你有更多的问题。您有多个版本安装了多个库,最多会使类加载器混淆,更糟糕的是导致您的应用程序错误地工作或根本不工作(特别是当版本之间存在不兼容的更改时):

antlr-2.7.6.jar                               # delete this
antlr-2.7.7.jar  

commons-collections-3.1.jar                   # and this
commons-collections-3.2.1.jar

hibernate-annotations-3.5.6-Final.jar         # and this
hibernate-commons-annotations-3.2.0.Final.jar # and this
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-3.6.10.Final.jar # and this
hibernate-core-4.1.0.Final.jar
hibernate-entitymanager-3.6.10.Final.jar      # and this
hibernate-entitymanager-4.1.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar

javassist-3.12.0.GA.jar                       # and this
javassist-3.15.0-GA.jar

slf4j-api-1.5.8.jar                           # and this
slf4j-api-1.6.1.jar