java.lang.NoClassDefFoundError: javax/el/ExpressionFactory异常和${}打印在页面上的解决办法【整理稿】


 
 -----------转帖开始----------
本文由   牛仔   发表在: 骑蚂蚁上火星
 
tomcat5.5.17+jstl1.2+servlet2.5+jsp2.1配置
在此我使用的环境是:
tomcat5.5.17
jstl1.2
servlet2.5
struts1.2+spring2.0+hibernate3.1

如果你按照以上目录发布工程,抛出以下异常:
(1)  java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
(2)  或打开页面后显示:
HTTP Status 404 - /hello1/type Status report
message /hello1/
descriptiThe requested resource (/hello1/) is not available.
Apache Tomcat/5.5.17
则将javaee.jar包再copy一份放在tomcat目录的common/lib下就不会了。
关于用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar这四个包可以通过myeclipse中获得,如果你安装了myeclipse5.5的话,我安装的是MyEclipse 5.5.1 GA,这四个包的所在的目录是:MyEclipse 5.5.1 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.5.1/data/libraryset/EE_5

-----------转帖结束----------

 

按以上所述完成后,出现的新问题是,运行的页面里把${}都给输出了,why?

找到的解决办法:


-----------转帖开始----------
问题: 
有些时候在使用JSP EL表达式时,直接用${param}时,在页面输出的是${param},而用<c:out value="${param}" />也不能正常显示? 

原因与解决方法: 
可能是与JSTL冲突了,如在页首加入了 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core divfix="c" %> 
1、当你的页面没有使用这些标准标志库中的操作时,将上面的语句删掉,即不要包含JSTL的信息,就可以正常输出 ${param} 
2、在页首加入 
<%@ page isELIgnored="false" %> 

就可以同时使用JSP 2.0 EL与JSTL了 
-----------转帖结束----------
上面是转帖。

经过测试,发现:tomcat6不用 加入<%@ page isELIgnored="false" %> 即可正常工作,

但是tomcat5.5的需要加上此句才可以避免在页面上输出${}。