【问题标题】:Servlet.service() throws ClassCastExceptionServlet.service() 抛出 ClassCastException
【发布时间】:2012-10-10 07:19:58
【问题描述】:

我有一个 java web 应用程序。我已经设置了这个新项目,运行 jsp 时出现以下异常,

Oct 10, 2012 3:01:49 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:151)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader modified
INFO:     Additional JARs have been added : 'activation-1.1.jar'
Oct 10, 2012 3:01:57 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/AutoUpgrade] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/AutoUpgrade] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak.

我已经多次尝试清理和构建项目,获取最新的 service-api.jar,我的库非常广泛,我无法弄清楚导致此错误的任何 jar 之间是否存在任何不一致。我在 jdk 1.6 上的 Apache Tomcat 6 上运行该项目(我的项目需要在 1.6 上运行)。我试过用谷歌搜索这个异常,但没有得到任何与我的问题相关的帖子。 stackoverflow上的相关问题讲的是NullPointerException。

我认为问题一定出在我的库上,但我无法指出根本原因。

谢谢

【问题讨论】:

  • 是特定 JSP 的问题,还是所有 JSP 的问题?您如何管理依赖项 - maven/ivy/gradle 或只是手动复制 jar?您可以查看您的依赖项列表,以查看是否包含任何 tomcat 库作为项目依赖项 - 这很可能是问题所在。
  • 问题出在所有的jsps上。我已将所有 jar 文件手动复制到我的项目 lib 文件夹中。将检查我的 tomcat 库中的依赖关系并让您知道

标签: java servlets tomcat6 classcastexception jdk1.6


【解决方案1】:

当您的 web 应用的 /WEB-INF/lib 中有 Tomcat 特定的 JAR 文件时,可能会发生这种情况。这个不对。您应该从那里删除所有特定于 servletcontainer 的 JAR 文件。他们根本不属于那里。它们应该已经由 servletcontainer 本身提供。 /WEB-INF/lib 应该只包含特定于 webapp 本身的库,这些库不是由 servletcontainer 提供的。

如果您因为不慎尝试修复编译错误而将它们放在那里,那么请仔细阅读此答案如何以正确的方式解决它:How do I import the javax.servlet API in my Eclipse project?

【讨论】:

  • 抱歉回复晚了。我忙于其他项目。您的回答完全有道理,我记得在我的 WEB-INF/lib 中使用了特定于 servletcontainer 的 JAR。将删除此类冲突的 JAR,并让您知道事情是如何工作的!谢谢,
  • 感谢 BalusC,清理 /lib 中的 jar 解决了问题!
  • 嗯,我的问题是我需要访问 org.apache.catalina,如果不将其添加为资源,我不知道该怎么做。有什么想法吗?
  • @Josh:只需点击我回答中的链接即可。
  • 当 JAR 被 pom.xml 依赖间接包含时怎么办?或者当您需要比 servlet 容器提供的 JAR 版本更新的 JAR 时?
【解决方案2】:

如果清理您的项目没有帮助,也许您需要清除缓存

Netbeans 缓存位于某处...
C:\Documents and Settings\myself.netbeans\7.0\var\cache

【讨论】:

  • 在eclipse中清理缓存不能解决问题。我认为问题一定是因为缺少/不一致的罐子
【解决方案3】:

从 lib 中删除以下内容。

  1. 检查不同版本的相同 jar
  2. 所有与 catalina 相关的罐子
  3. el-api.jar
  4. jsp-api.jar

这肯定会奏效。

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 2015-08-10
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2013-04-13
    • 2017-10-10
    相关资源
    最近更新 更多