无法调用servlet

时间:2011-07-11 23:46:49

标签: web-applications servlets

我收到此消息: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调用

5 个答案:

答案 0 :(得分:0)

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

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

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

Tomcat 5.5 class loader how to

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

祝你好运。

答案 1 :(得分:0)

java.lang.ClassNotFoundException: controller.UserController

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

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

答案 2 :(得分:0)

以下是可能的解决方案

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

  2. 你如何调用servlet,我的意思是你可以发布调用servlet的代码

答案 3 :(得分:0)

问题出在web.xml文件中。那边的东西配置错了。 我的解决方案是删除所有与servlet有关的事情,然后手动将servlet添加到部署。

答案 4 :(得分:0)

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

此类问题始终与web.xml

相关联