在tomcat中部署java web应用程序的JSP问题
我正在学习 ANT,并尝试在 tomcat 6.0.20 服务器中部署一个 Web 应用程序。 我构建了测试应用程序,并使用 manager ant 任务部署它,一切顺利。我加载一个 HTML 页面并且它可以工作...当我尝试查看 JSP tomcat 时,给我一个 JasperException,这是由自动生成的 Servlet 中的 NullPointerException 引起的。 JSP几乎是一个带有jsp扩展名的HTML文件。当 _jspInit 方法尝试运行以下命令时,会抛出异常: _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); 有人可以帮助我吗?谢谢!
I'm learning ANT and I'm trying to deploy a web application in tomcat 6.0.20 server.
I build the test application and I deploy it with the manager ant tasks and everything goes right. I load a HTML page and it works... When I try to view a JSP tomcat give me a JasperException, coused by a NullPointerException in the auto-generated Servlet. The JSP is almost an HTML file with jsp extension. The Exception is throwed in the _jspInit method when it tries to run the following:
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
somebody can help me? thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能您在
/WEB-INF/lib
中有jsp-api-*.jar
。将其删除。编辑:解释
JSP API包含一个抽象类
JspFactory
。它有一个static
字段来存储特定于服务器的JspFactory
实现。因此,Tomcat 设置该字段的值,JSP 页面初始化代码读取该值以获得JspFactory
实现。在您的情况下,您有两个不同的JspFactory
类 - 一个由服务器类加载器从服务器 jar 加载,另一个由应用程序类加载器从/WEB-INF/lib
加载。由于不同的类加载器加载的类是不同的类,它们的static
字段值不同,因此JSP代码(_jspxFactory
)获取到的JspFactory
为<代码>空。这说明了使用静态字段可能导致的问题之一。
Probably you have
jsp-api-*.jar
in/WEB-INF/lib
. Remove it.EDIT: Explanation
JSP API contains an abstract class
JspFactory
. It has astatic
field to store a server-specificJspFactory
implementation. So, Tomcat sets a value of this field and JSP page initialization code reads it to obtain aJspFactory
implementation. In your case you have two differentJspFactory
classes - one loaded by server classloader from server jars and another loaded by application classloader from/WEB-INF/lib
. Because classes loaded by different classloaders are different classes, they have differentstatic
field values, thereforeJspFactory
obtained by the JSP code (_jspxFactory
) isnull
.This illustrates one of the possible problems caused by use of
static
fields.