1. java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory错误
2012-11-3 15:40:54 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:269)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
解答: 缺少 commons-logging.jar,也可以添加commons-logging-1.0.4.jar,建议使用后者或者更新版本。
2. java.lang.NoClassDefFoundError: org/hibernate/cfg/NamingStrategy
2012-11-3 15:51:55 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/hibernate/cfg/NamingStrategy
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getDeclaredMethods(Class.java:1791)
解答:没有加载Hibernate jar包
3. 关于this.getClass().getResource("/").getPath();路径问题:
当运行单个java 类文件(带main方法)测试:
发现返回路径正常:D:/SVN_SOURCE/AP_SOURCE/agentportal/WebRoot/WEB-INF/classes/(次为工程class路径)
当发布到tomcat环境,发现同一java类,方法,语句,返回的是:D:/tomcat6.0/lib
而在另外一个tomcat环境发现返回值正常为:D:/SVN_SOURCE/AP_SOURCE/agentportal/WebRoot/WEB-INF/classes/
经过对比tomcat环境发现: tomcat/conf/content.xml中配置不一样:
<!-- Loader对象可出现在Context中以控制Java类的加载
属性:delegate、含义:True代表使用正式的Java代理模式(先询问父类的加载器);
false代表先在Web应用程序中寻找。警告:如果不知道如何处理,
则不要改变这一属性值、默认值:FALSE (把下面的注释即可)
<Loader delegate="true" />
-->
ps: 在获取该路径的文件时,路径中不应该包含空格。
4. org/objectweb/asm/Type异常解决办法
[refer to: http://www.cnblogs.com/hqr9313/archive/2012/08/14/2638137.html]
调试SPRING MVC(或者整合SSH)的时候遇到了org/objectweb/asm/Type
解决方法1:
原因是Spring中的cglib-nodep-2.x.x.jar与Hibernate中的cglib-2.2.jar相冲突! 两种框架整合时Spring中的cglib-nodep-2.x.x.jar是必须的,取消Hibernate中的cglib-2.2.jar即可
解决方法2:
在Hibernate 3.2.6.中的 cglib 是 cglib-2.1.3.,jar 使用 cglib-2.2.jar 则出现以上问题。将cglib-2.2.jar换成cglib-2.1.3.jar
解决方法3(我使用这个成功了):
如果以上方法不行,则删除cglib-2.2,cglib-2.1.3,cglib-nodep-2.x.x.jar,直接导入ams-all-4.0.jar包。
5. 关于AnnotationSessionFactoryBean和LocalSessionFactoryBean 的区别
这两种SessionFactoryBean是配置hibernate配置实体及字段与表的映射时的两种不同方法。他们的使用与否在applicationContext.xml中配置!
一、annotation是注释、注解 的意思,在hibernate配置实体及字段与表的映射时,annotationSessionFactoryBean提供一种注解的方式来映射,它可以 依赖@注解通过实体类生成表(包括字段、主键···)。这种方法是spring2.5以后才有的。
注:@Entity 、@Table(name=“····”) 这些以@开头的就是注解,他们需要引入相应的类、包,如import javax.persistence.Entity;
@Column(name="***")的注解用在字段的get方法上。另外还有很多@注解,如@ManyToOne @JoinColumn(name="****")等等,
二、LocalSessionFactoryBean
LocalSessionFactoryBean,在applicationContext.xml中配置之后,需要另外一个***.hbm.xml的配置文件对实体和表的具体映射进行配置。这里只说个大概,具体的配置,需要那种配置,