4

在 tomcat 7.0 上部署了一个 web 服务。访问应用程序或什至是根应用程序的tomcat主页时出错。

HTTP Status 500 - java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;

type Exception report

message java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;

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

exception

javax.servlet.ServletException: java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:514)
    org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1798)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

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

Tomcat 日志

Jul 16, 2013 9:30:57 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root cause
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
        at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:514)
        at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1798)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)



   <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>FinServlet</servlet-name>
        <servlet-class>finanalytic.servlets.FinServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FinServlet</servlet-name>
        <url-pattern>/FinServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

Tomcat 库文件夹

ls /usr/lib/apache-tomcat-7.0.42/lib
annotations-api.jar  FastInfoset.jar           jaxb-api.jar   jaxws-tools.jar     resolver.jar      tomcat-coyote.jar   woodstox-core-asl.jar
catalina-ant.jar     gmbal-api-only.jar        jaxb-core.jar  jsp-api.jar     saaj-impl.jar     tomcat-dbcp.jar
catalina-ha.jar      ha-api.jar            jaxb-impl.jar  jsr181-api.jar      servlet-api.jar   tomcat-i18n-es.jar
catalina.jar         jasper-el.jar         jaxb-jxc.jar   log4j.properties    stax2-api.jar     tomcat-i18n-fr.jar
catalina-tribes.jar  jasper.jar            jaxb-xjc.jar   management-api.jar  stax-ex.jar       tomcat-i18n-ja.jar
ecj-4.2.2.jar        javax.annotation-api.jar  jaxws-api.jar  mimepull.jar    streambuffer.jar  tomcat-jdbc.jar
el-api.jar       javax.xml.soap-api.jar    jaxws-rt.jar   policy.jar      tomcat-api.jar    tomcat-util.jar

应用程序库文件夹

ls /usr/lib/apache-tomcat-7.0.42/webapps/finClient/WEB-INF/lib
hbase-0.94.6-cdh4.3.0-security.jar  http.jar
4

3 回答 3

1

刚刚搜索了一下,发现库 jar 文件位于您的 Web 应用程序文件夹(webcontent/lib)中,与 apache 服务器 servlet 容器 lib 文件不匹配。如果您将任何 tomcat jar 文件复制到您的 web 应用程序文件夹中,只需删除它们,因为它已经存在于 tomcat 服务器库中。

于 2013-07-17T00:33:31.780 回答
0

您需要将 tomcat jasper jar 添加到您的类路径 http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.tomcat/tomcat-jasper/7.0.55/

我遇到了同样的问题,但使用嵌入式 tomcat 并通过向 pom 文件添加以下依赖项来修复它

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
于 2014-09-17T08:11:39.330 回答
0

绝对库文件与编译代码不匹配以及容器具有什么..

http://mydailygyaan.blogspot.com/2012/11/http-status-500-javalangabstractmethode.html

删除您的应用程序并取出您添加到 tomcat lib 文件夹中的所有 jars..您的一个库文件与 Tomcat 库文件不兼容..一旦显示 Tomcat 主页,添加您的应用程序并查找库文件之一其他之后..

于 2013-07-17T02:15:38.587 回答