您的位置:首页 > 运维架构 > Tomcat

tomcat5.5.12 javax/el/ExpressionFactory 工程部署失败案例

2010-10-20 19:01 447 查看
今天遇到奇怪问题,myeclipse6.5 +tomcat 6.0开发的项目 部署到客户tomcat5.5.12中失败(5.5.20及以上都没有问题)非常郁闷。具体表现为tomcat启动不报错,但访问工程提示404错误,包括工程中的任何html也无法访问,如果使用war包根本就不解压缩。

难道这个tomcat5.5.X中的x就这么牛啊?

百般折腾,在伟大的互联网搜索下看到一位网友的提示:提高tomcat日志级别看看到底哪出错了,于是照做(具体步骤如下,在此感谢这位网友)

提高tomcat日志:

1、拷贝commons-logging-1.0.4.jar、log4j-1.2.11.jar(具体版本号及安装目录视情况而定)到 tomcat5.5.12/common/lib

2、在tomcat5.5.12/common/classes中创建log4j.properties文件并输入如下内容:

log4j.rootLogger=info,Console,R
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n
log4j.logger.org.apache=info,R
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R
log4j.logger.org.apache.catalina.core=info,R
log4j.logger.org.apache.catalina.session=info,R

3、重启tomcat,就会在tomcat5.5.12/logs中看见tomcat.log,慢慢找到出错的地方,我的提示什么java.lang.NoClassDefFoundError:javax/el/ExpressionFactory

解决问题:

后来才了解到出现这个问题的原因是javax.el.ExpressionFactory是 unified EL的一部分,并且已经做为JSR 245标准成了JSP2.1的一部分,JSF1.1还没有用到JSR245标准,但是JSF1.2已经用上了JSR 245标准,假如要部署一个JSR1.2的portlet到一个不支持JSR245的web容器就会出现这个异常(这个是某个网友的解释,不过个人认为很正确啊)。也就是说tomcat5.5.12还没有用JSR245标准。

那么就需要拷贝javaee.jar到tomcat5.5.12/common/lib中,重启tomcat解决问题!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐