【问题标题】:JSP problem deploying a java web application in tomcat在tomcat中部署java web应用程序的JSP问题
【发布时间】:2010-06-18 16:58:58
【问题描述】:

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

【问题讨论】:

    标签: java jsp ant tomcat6


    【解决方案1】:

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

    编辑:解释

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

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

    【讨论】:

    • 确实,他不是唯一一个:click here。摆脱 /WEB-INF/lib 中的所有特定于服务器的库。它们不属于那里,只会与Tomcat/lib 中的真实服务器管理库发生冲突。
    • 非常感谢你!那是问题!我把那个罐子放在那里是为了测试一些东西,但我忘了把它拿下来。你能解释为什么这是一个错误吗?我知道 Tomcat 在 lib 目录中有 jar,但为什么冗余不好?
    • @user279481:已添加说明。
    猜你喜欢
    • 2018-07-14
    • 2015-04-15
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2012-06-23
    • 2012-01-16
    • 2017-10-25
    相关资源
    最近更新 更多