我写了个xml文件存放系统模块,然后用jstl的x标签读出,并用列表显示。在我机子上可以,但是在师弟机子上死活不行。老出现以下错误:
java.lang.NoClassDefFoundError: org/apache/xpath/VariableStack
at org.apache.taglibs.standard.tag.common.xml.ExprSupport.doStartTag(ExprSupport.java:63)
at org.apache.jsp.nav_jsp._jspx_meth_x_005fout_005f0(nav_jsp.java:222)
at org.apache.jsp.nav_jsp._jspService(nav_jsp.java:125)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
具体调式分析如下:
调试分析如下:
1.源文件相同,肯定是配置问题,可是我们用的是相同版本的MyEclipse、Tomcat,JDK倒是不同。
2.上网查说是缺少xalan.jar包,我们导入包之后,仍然出现相同错误。
3.新建一个项目,从jstl的c标签开始逐步调试,还是在路径解析上出错。
4.再找原因,发现网上有一条说下载tomcat5.5-compact,把内容全部解压至%tomcat5.5%/common/endorsed。我查看了我的tomcat对应目录下有xalan,而师弟的tomcat下没有这个包。!就是这个问题了!
5.在师弟的电脑中%tomcat5.5%/common/endorsed下复制xalan包,结果就运行成功了。
总结原因:我用的是安装版的tomcat ,师弟用的是绿色版的tomcat,在%tomcat5.5%/common/endorsed文件夹下找不到xalan.jar,所以报错。
解决办法:把xalan.jar复制到%tomcat5.5%/common/endorsed目录下即可。
备注:其它配置无误情况下。