错误:Wrapper无法找到servlet类VendorRegistration或它依赖的类

时间:2011-03-01 14:09:52

标签: java tomcat servlets

我是一个新手,他也一直在寻找解决同样问题的方法。我遵循了Elite Gentleman和Bozho概述的here步骤。首先,非常感谢你们。但我似乎仍然有同样的问题。现在根据我的理解和实施,我的情况如下:

我的servlet类VendorRegistration位于以下文件夹中:C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ VendorReg \ WEB-INF \ classes

我的web.xml出现在:C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ VendorReg \ WEB-INF \

但是,我似乎仍然收到错误:

**** HTTP状态500 - type异常报告消息说明服务器遇到内部错误(),导致其无法完成此请求。异常javax.servlet.ServletException:Wrapper找不到servlet类VendorRegistration或它依赖的类****

我还在下面添加了我的web.xml文件供您考虑:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  <servlet>

    <servlet-name>VendorRegistration</servlet-name>
    <servlet-class>VendorRegistration</servlet-class>

  </servlet>

    <servlet-mapping> 
    <servlet-name>VendorRegistration</servlet-name> 
    <url-pattern>/VendorRegistration</url-pattern> 
    </servlet-mapping> 

</web-app>

我试图通过URL访问servlet:http://localhost:8080/VendorReg/VendorRegistration。我错过了什么?我在安装Apache之前的某个时候编译了.class文件。因此直接复制粘贴文件夹中的类文件。这可能是个问题吗?

6 个答案:

答案 0 :(得分:5)

类路径中缺少servlet或其中一个依赖项。

首先,始终将Java类放在一个包中,也就是servlet。无包装类对于普通包中的类是不可见的。对于servlet,这仅适用于特定环境。你不想依赖它。

package com.example;

public class VendorRegistration extends HttpServlet {
    // ...
}

使用此程序包,已编译的.class文件必须以/WEB-INF/classes/com/example/VendorRegistration.class结尾。不要忘记相应地更改<servlet-class>中关联的web.xml条目。

<servlet>
    <servlet-name>VendorRegistration</servlet-name>
    <servlet-class>com.example.VendorRegistration</servlet-class>
</servlet>

如果这没有用,那么你应该把包含任何servlet的import语句中指定的(in)直接类的类或JAR文件放在/WEB-INF/classes中(对于{ {1}}个文件)或.class(对于JAR文件)。异常堆栈跟踪的根本原因应该确切地告诉它是哪个类。只需阅读堆栈跟踪。

另见:

答案 1 :(得分:2)

从tomcat 6.0开始,<url-pattern>

发生了变化
<servlet>
<servlet-name>VendorRegistration</servlet-name>
<servlet-name>VendorRegistration</servlet-name>
</servlet>

<servlet-mapping>
       <servlet-name>VendorRegistration</servlet-name>
       <url-pattern>/servlets/servlet/VendorRegistration</url-pattern>
</servlet-mapping>

它适用于我的情况!

答案 2 :(得分:1)

在我的情况下,当我从另一个项目中复制/粘贴HelloWorld.java类示例时,问题就开始了。最后,我通过简单地创建一个新包,然后从头开始创建一个新的HelloWorld.java并仅复制doGet()方法的代码来解决它。

然后我重新启动服务器并运行http://localhost:8080/mltest/HelloWorld

它有效!

答案 3 :(得分:0)

我也遇到了同样的问题。实际上我的一个程序在几次更改之后就已经工作了,这显示了我的错误。我甚至撤消了恢复变化,仍然发生在我身上。 最后,我为我的场景找到了一个有效的解决方案。

SIMPLE:

1.只需尝试清理项目并再次运行。如果它显示相同的错误,如果您确定代码没有任何问题,那么

2.启用&#34;自动构建&#34;菜单项&#34;项目&#34;菜单,并尝试清理您的项目。这次对我有用。

听说这是因为当我们进行一些更改并运行时,eclipse也会在其背景中进行一些更改。因此,即使我们恢复了这些变化,eclipse也可能没有恢复它在后台所做的更改。因此,执行这两个步骤将确保它与用户更改匹配及其背景更改。

希望它有助于解决您的问题。

答案 4 :(得分:0)

这是我解决问题的方法,当时我遇到了同样的例外。

  1. 确保添加正确的库,我们需要添加Library Tomcat。一开始,我刚刚添加了servlet-api.jar,但有人告诉我这不是正确的方法。也许当你在tomcat中实现项目时,它与Tomcat有一些冲突。 enter image description here

  2. 确保您的项目位于正确的文件夹%Tomcat_HOME%\webapps\%projectName\WEB-INF\classes\.....

  3. 确保右侧文件夹中的web.xml,并使用正确的格式, %Tomcat_HOME%\webapps\%projectName\WEB-INF\web.xml

  4. 在Tomcat中重新加载应用程序。

  5. 通过URL访问servlet: http://localhost:port/%projectName%

答案 5 :(得分:-1)

我担心你试图直接访问servlet类是错误的。

通常,URL应该是您的应用程序文件夹下的任何txt,jsp,html文件,但是servlet用于响应客户端的“POST”或“Get”请求,不可能直接通过URL访问它