strut2配置错误集合
用tomcat6启动时,出现下面的错误
java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger;
Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.logging.Logger
原因是struts2的包和xwork的包的版本不同
我用的是
xwork-2.0.4.jar
struts2-core-2.1.8.1.jar
那么struts2-core-2.1.8.1.jar包下面的org.apache.struts2.dispatcher.FilterDispatcher类有一个log全局变量
private Logger log = LoggerFactory.getLogger(FilterDispatcher.class);
LoggerFactory是在
com.opensymphony.xwork2.util.logging.LoggerFactory;
而xwork-2.0.4.jar没有这个类,要下载xwork-2.1.2.jar以上的版本才Yui有这个logging包
下载网址是
http://www.opensymphony.com/xwork/download.action
把xwork-2.0.4.jar换为xwork-2.1.2.jar重新启动项目就ok了
太郁闷了,struts2的这些jar包存在很严重的兼容问题,其原因在于jar中类的实现需要在另外一个jar中实现,但是jar的版本很多,struts2.1.x添加了struts2.0.x没有的接口,那么就需要其他jar也跟着更新,必须需要好好整理下,有些时候需要去tomcat /webapp/文件下删除失败项目,然后重新启动项目才会生效