我正在学习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
)获得的_jspxFactory
为null
。
这说明了使用static
字段引起的可能问题之一。