jsp发布出错505- 求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp发布出错505- 求解相关的知识,希望对你有一定的参考价值。

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /index.jsp(19,0) File "/top.jsp" not found
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.apache.jasper.JasperException: /index.jsp(19,0) File "/top.jsp" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:86)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:339)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:372)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:484)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.15 logs.

--------------------------------------------------------------------------------

Apache Tomcat/5.5.15

404是路径错误,500是内部错误
message
description The server encountered an internal error () that prevented it from fulfilling this request.
这段意思是 描述:服务器遇到内部错误(),使它无法满足这个要求。
主要是看这个org.apache.jasper.JasperException: /index.jsp(19,0) File "/top.jsp" not found。在index.jsp 19行出现错误,没有发现头部文件top.jsp,就是说你引用了top.jsp这个jsp,但是它没找到。
参考技术A 这个异常的意思就是:未找到top.jsp 这个页面.
行数在19行。
你查看一下页面,检查一下路径问题。
参考技术B 你是不是在index.jsp里用了
<%@ include="/top.jsp"%> ?
报错说这个jsp路径不对,没找到
参考技术C 这个问题我也见过,但是时间久了,忘记了,肯定不是你的文件找不到,就算真是没那文件,也不会报这样的错的,好像是环境有问题吧,JDK版本过低,还是其他的什么,你朝这个方向试试吧

使用 JSTL 从 Spring Controller 访问 Map 到 JSP 时出错

【中文标题】使用 JSTL 从 Spring Controller 访问 Map 到 JSP 时出错【英文标题】:Getting error while accessing the Map from Spring Controller to JSP using JSTL 【发布时间】:2011-11-08 15:14:10 【问题描述】:

我有一个弹簧控制器,我在其中返回一个名为“模型”的地图;模型包含一组值,但重要的是还包含一个ArrayList。现在我将此 Map 返回到我的 JSP,同时在我的 JSP 中使用 JSTL 来获取 ArrayList 它会引发错误。

<c:forEach items="$model.result" var="data" varStatus="status"> <!-- result is my ArrayList -->
    <c:out value="$data.url" /> <!-- here url is data inside my result arraylist -->
</c:forEach> 

产生的错误是:

root cause 

java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
    at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587)
    at javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323)
    at jsp_servlet._jsp.__searchsuccess._jsp__tag3(__searchsuccess.java:294)
    at jsp_servlet._jsp.__searchsuccess._jspService(__searchsuccess.java:137)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)

它在 Tomcat 服务器上运行良好,但是当我将它部署在 Weblogic(9.2) 服务器上时,它给出了错误。我的类路径条目是:

<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-fileupload-1.1.1.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-io-1.2.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-logging-1.1.1.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/hibernate-validator-4.0.2.GA.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4j-1.2.14.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-api-1.5.6.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-log4j12-1.5.6.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-asm-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-beans-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-context-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-core-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-expression-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-web-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-webmvc-3.0.3.RELEASE.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/validation-api-1.0.0.GA.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4j-1.2.9.jar"/>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/servlet-2.3.jar"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
        <attributes>
            <attribute name="owner.project.facets" value="jst.java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="WebContent/WEB-INF/lib/jstl-1.2.jar"/>
    <classpathentry kind="output" path="WebContent/WEB-INF/classes"/>

更新:我已删除 jstl-1.2.jar,现在出现编译错误:

searchsuccess.jsp:1:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during pa
rsing of the .tld file.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    ^----^
searchsuccess.jsp:1:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during pa
rsing of the .tld file.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    ^----^

        at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:298)
        at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
        at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
        at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:394)

【问题讨论】:

另外,我在某处看到......不要使用 jsp-api.jar 但对我来说并非如此,因为我的网络应用程序中没有任何 jsp-api.jar.. :P 【参考方案1】:

根据堆栈跟踪,

java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
    at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587)

JSTL &lt;c:forEach&gt; 标记期待方法 PageContext#getELContext()。这种方法是在 JSP 2.1 中引入的。因此,此异常表明您使用的是 JSTL 1.2,而您的容器不支持 JSP 2.1,或者您在运行时类路径中使用了不支持 JSP 2.1 的容器的特定于 servletcontainer 的 JSP 库。运行时类路径包括 webapp 的 /WEB-INF/lib 文件夹和 Java 的 JRE/libJRE/lib/ext 文件夹。

您应该永远不要将特定于 servletcontainer 的库放在这些文件夹中,例如 jsp-api.jarservlet-api.jarel-api.jarj2ee.jarjavaee.jar 等。您通常在 servletcontainer 本身的 /lib 文件夹中看到的文件。例如。 Tomcat/lib。它使您的 web 应用程序无法移植到目标 servlet 容器。您正在运行此 web 应用程序的目标 servlet 容器已经拥有这些库。如果您这样做是为了克服 JSP/Servlet 包上的编译错误,那么您应该以不同的方式解决它。另见How do I import the javax.servlet API in my Eclipse project?


更新:根据您的更新,您使用的是 Weblogic 9.2,它是一个 Servlet 2.4 / JSP 2.0 容器。它根本不支持 JSP 2.1 / JSTL 1.2。您需要删除 JSTL 1.2 库。如果我没记错的话,Weblogic 已经附带了 JSTL 1.1。否则,您需要自己将其包含在类路径(/WEB-INF/lib 文件夹)中。您可以在our JSTL wiki page 中找到 JSTL 1.1 下载链接。

【讨论】:

java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;在 javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587) 在 javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323) 在 jsp_servlet._jsp.__searchsuccess._jsp__tag3 (__searchsuccess.java:294) 在 jsp_servlet._jsp.__searchsuccess._jspService(__searchsuccess.java:137) 在 weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 嘿,伙计,你放的那个... 删除jstl-1.2.jar。 Weblogic 已经随 JSTL 1.1 一起提供。 Weblogic 9.2 仅支持 Servlet 2.4 / JSP 2.0。 JSTL 1.2 需要 Servlet 2.5 / JSP 2.1。因此出现了这个例外。 我在 jsp 的这一行 searchsuccess.jsp:1:5 中遇到编译错误:无法使用此 URI 找到标记库。可能的原因可能是 URI 不正确,或者在解析 .tld 文件期间出现错误。 java.sun.com/jsp/jstl/core" %> 那么 Weblogic 显然没有随 JSTL 1.1 一起提供,或者您在类路径中乱扔了来自 JSTL 1.2 的松散 TLD 文件。无论如何,您需要最高 JSTL 1.1。如果 Weblogic 真的没有附带它(这让我感到惊讶),那么您可以尝试自己提供它。你可以找到一个 JSTL 1.1。我们的 JSTL wiki 页面中的下载链接 ***.com/tags/jstl/info 它由两个 JAR 文件 jstl.jarstandard.jar 组成。【参考方案2】:

你的 webapp 中有 el-api.jar 吗?

请看下面的帖子:

http://www.coderanch.com/t/526731/JSP/java/java-lang-NoSuchMethodError-javax-servlet

-Kaj :)

【讨论】:

el-api.jar 本身的存在不会导致这个特殊的异常。更重要的是,el-api.jar 在 JSP 2.1 之前不存在。在 JSP 2.0 中,它作为 jsp-api.jar 的一部分提供(至少在 Tomcat 中)。 EL 是按照 JSP 2.1 从 JSP 中提取的。另请参阅 ***.com/questions/4812755/… 了解一些 EL 历史。

以上是关于jsp发布出错505- 求解的主要内容,如果未能解决你的问题,请参考以下文章

java web servlet 调用 dao层方法 总出错 !!!!新手求解,多谢!!!

电信版的多普达S505手机不断提示sapi.exe无法打开,而且其他很多系统程序无法打开,都报出错

JSP页面运行时报的404错,求解???

将 ArrayList 从 Servlet 传递到 JSP 时出错

做流浪汉时出错

关于scrapyd部署出错问题 求解讨论