我正在学习ANT,并且试图在tomcat 6.0.20服务器中部署Web应用程序。
我构建了测试应用程序,并将其与管理器ant任务一起部署,一切正常。我加载了HTML页面,并且可以正常工作...当我尝试查看JSP Tomcat时,给我一个JasperException,它由自动生成的Servlet中的NullPointerException引起。 JSP几乎是带有jsp扩展名的HTML文件。尝试运行以下代码时,_jspInit方法将引发异常:
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig()。getServletContext())。getExpressionFactory();
有人可以帮助我吗?谢谢!

最佳答案

可能您在jsp-api-*.jar中有/WEB-INF/lib。去掉它。

编辑:解释

JSP API包含一个抽象类JspFactory。它具有一个static字段,用于存储特定于服务器的JspFactory实现。因此,Tomcat设置了该字段的值,并且JSP页面初始化代码读取该字段以获得JspFactory实现。在您的情况下,您有两种不同的JspFactory类-一种是由服务器jar从服务器jars加载的,另一种是由应用程序classloader从/WEB-INF/lib加载的。因为由不同的类加载器加载的类是不同的类,所以它们具有不同的static字段值,因此,由JSP代码(JspFactory)获得的_jspxFactorynull

这说明了使用static字段引起的可能问题之一。

07-28 00:21