【问题标题】:Trouble calling servlet调用 servlet 时遇到问题
【发布时间】:2011-07-11 23:46:48
【问题描述】:

我收到这条消息:SEVERE: Error loading WebappClassLoader
网上很多人发过这个问题,我还没有找到很好的解决方案。

我想要做的只是从 JSP 页面调用一个 servlet(使用 AJAX)。问题是我收到了Internal server error。有人知道吗?

以防万一,我使用的是 eclipse 和 Tomcat6。

完全错误:

SEVERE: Error loading WebappClassLoader
  context: /Shaot
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@f11404
 controller.UserController
java.lang.ClassNotFoundException: controller.UserController
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    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:859)
    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(Unknown Source)
12/07/2011 02:29:14 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet UserController
java.lang.ClassNotFoundException: controller.UserController
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    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:859)
    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(Unknown Source)

当 AJAX 调用的 url 为 /NameOfTheProject/UserController 时,使用 (JQuery) 使用 AJAX 调用

【问题讨论】:

  • 有人想出解决这个问题的方法吗?我也面临同样的问题。

标签: web-applications servlets


【解决方案1】:

我认为您的问题是 JVM 对 controller.UserController 一无所知。无论出于何种原因,类加载器似乎没有加载您尝试调用的控制器。

首先尝试通过浏览器测试 servlet 的调用(即使您只是创建一个简单的 HelloWorld Servlet 以确保它被正确加载以供使用。

查看 Tomcat 的类加载器文档,了解幕后发生的事情; Tomcat 6.0 class loader how to

Tomcat 5.5 class loader how to

另外,可以在您的 servlets init() 方法中放置一个断点,以查看在通过浏览器或通过 AJAX 访问它时是否实际调用过它。

祝你好运。

【讨论】:

    【解决方案2】:
    java.lang.ClassNotFoundException: controller.UserController
    

    异常告诉类路径中缺少类controller.UserController。要解决此问题,只需将消息中提到的类放入类路径中即可。

    在您的具体情况下,您需要确保您的 webapp 的部署文件夹中有一个 /WEB-INF/classes/controller/UserController.class 文件。

    【讨论】:

      【解决方案3】:

      以下是可能的解决方案

      1. 尝试清理项目并重新编译。

      2. 你是怎么调用servlet的,我的意思是你能把调用servlet的代码贴出来

      【讨论】:

      • 清洁没有帮助...我在问题的末尾发布了我如何称呼它
      • 类文件是否位于 NameOfTheProject/webapps/WEB-INF/classes/controller/UserController.class
      【解决方案4】:

      问题出在 web.xml 文件中。那边配置有问题。 我的解决方案是删除所有与 servlet 相关的内容,然后手动将 servlet 添加到 Deployment。

      【讨论】:

        【解决方案5】:

        问题出在 web.xml 如果您的应用程序支持 jsf,并且您为 faces servlet 输入相同的内容,那么 jar 可能会丢失,因此它会说找不到类。

        这种问题总是与 web.xml 相关联

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多