我正在学习ANT,我正在尝试在tomcat 6.0.20服务器中部署Web应用程序。 我构建了测试应用程序,并使用管理器ant任务部署它,一切正常。我加载一个HTML页面,它工作...当我尝试查看JSP tomcat时,给我一个JasperException,由自动生成的Servlet中的NullPointerException驱动。 JSP几乎是一个带有jsp扩展名的HTML文件。尝试运行以下内容时,在_jspInit方法中抛出异常: _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig()。getServletContext())。getExpressionFactory(); 有人可以帮帮我吗?谢谢!
答案 0 :(得分:3)
您可能jsp-api-*.jar
中有/WEB-INF/lib
。删除它。
编辑:解释
JSP API包含一个抽象类JspFactory
。它有一个static
字段来存储特定于服务器的JspFactory
实现。因此,Tomcat设置此字段的值,JSP页面初始化代码读取它以获取JspFactory
实现。在您的情况下,您有两个不同的JspFactory
类 - 一个由服务器类加载器从服务器jar加载,另一个由应用程序类加载器从/WEB-INF/lib
加载。由于不同类加载器加载的类是不同的类,因此它们具有不同的static
字段值,因此JSP代码(JspFactory
)获得的_jspxFactory
为null
。
这说明了使用static
字段可能导致的问题之一。