原因
昨天遇到了这个javassist这个错误,网上一查是struts2和hibernate的javassist.jar冲突导致的,按照网上去除还是报错。
解决办法
自己摸索了一遍原来光去除struts2-core的依赖没用,要把所有strust相关的jar包引用去除对javassist的依赖。
比如我引用了org.apache.struts:struts2-core:2.3.16.3、org.apache.struts:struts2-spring-plugin:2.3.16.3和org.apache.struts:struts2-json-plugin:2.3.24.3三个strust的jar包
在gradle依赖中就应该把三个jar包都去除对javassist的依赖!maven的请自测!(如果去除了对javassist的依赖还是报错,请看最后一点)
compile('org.apache.struts:struts2-core:2.3.16.3'){
exclude group:'javassist',module:'javassist'
},
compile('org.apache.struts:struts2-spring-plugin:2.3.16.3'){
exclude group:'javassist',module:'javassist'
},
compile('org.apache.struts:struts2-json-plugin:2.3.24.3'){
exclude group:'javassist',module:'javassist'
}
使用OpenSessionInView
如果还是报错,请在web.xml中添加下面的代码,如果还是不行,就爱莫能助了,注意我的hibernate是4.3的。
<!-- 定义Spring保持session的Filter 默认的去找bean的id为sessionfactory的bean-->
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>