麻烦下各位:
       在新建项目JavaMail下的login页面提交给/checkUser时,出现了这样的错误:
   Wrapper cannot find servlet class Beans.checkUser or a class it depends on
      而tomcat/conf/web.xml中的配置是
     <servlet>
       <servlet-name>checkUser</servlet-name>
       <servlet-class>Beans.checkUser</servlet-class>
    </servlet>
    <servlet-mapping>
          <servlet-name>checkUser</servlet-name>
          <url-pattern>/checkUser</url-pattern>
    </servlet-mapping> 
      在JavaMail/WEB-INF/classes里放了package为Beans的checkUser.class,但是调用
    checkUser时好象找不到该servlet的路径,我试过把.../JavaMail/WEB-INF/classes的路径
    给tomcat,就调用得了,可是运行时测试出session并没有传递给checkUser,连request里的值
    也无法在checkUser里获取?所以,我觉得把servlet的路径给tomcat还是不对劲的。
       应该怎么样解决那个找不到servlet的错误?

解决方案 »

  1.   

    请将Beans.checkUser 类放置在工程下。webDemo/WEB-INF/补充一点,Beans目录下,webDemo为工程目录。
      

  2.   

       是要把Beans.checkUser放在JavaMail/WEB-INF/下吗?我刚才试了还是
       有那个错误,原本是放在JavaMail/WEB-INF/classes下也出错,
       应该怎么办呀?
      

  3.   

    首先 web.xml应该放在: 工程名/WEB-INF/lib/web.xml
    其次应该在 logon的action 中配置 /工程名/checkuser
      

  4.   

    楼上的多打了个字..
    web.xml应该是直接放在web-inf目录下吧
      

  5.   

       我在\JavaMail\web-inf下加了web.xml,主要内容为
         <servlet>
           <servlet-name>checkUser</servlet-name>
           <servlet-class>Beans.checkUser</servlet-class>
        </servlet>
        <servlet-mapping>
              <servlet-name>checkUser</servlet-name>
              <url-pattern>/checkUser</url-pattern>
        </servlet-mapping>
       在Tomcat 5.0\conf\Catalina\localhost下加了JavaMail.xml,主要内容为 
        <Context path="/JavaMail" docBase="JavaMail"
            debug="0" privileged="true">
        </Context>
       这样还是不行,我其他的项目也大致是这样配置都行,这次好奇怪,
       至于“应该在 logon的action 中配置 /工程名/checkuser”,能不能说清楚点?
      

  6.   

    嘿嘿是多打了个/lib  
    SORRY!
      

  7.   

        楼上能不能把在logon的action中的配置说具体一点,
        是不是在.../struct/action目录下的文件要配置呀?
        谢谢!
      

  8.   

    D:\JavaMail\
               + WEB-INF\
                        + web.xml 
                        + classes\
                                 + beans\
                                        + CheckUser.class在web.xml中配置Servlet,如下(注意不要加多余的空格符[你的配置中就有],以免造成未知错误):
         <servlet>
             <servlet-name>CheckUser</servlet-name>
             <servlet-class>beans.CheckUser</servlet-class>
         </servlet>
         <servlet-mapping>
             <servlet-name>CheckUser</servlet-name>
             <url-pattern>/checkUser</url-pattern>
         </servlet-mapping>
    Tomcat 5.x下的配置: Tomcat 5.0\conf\Catalina\localhost下加了JavaMail.xml
         <Context path="/JavaMail" docBase="D:\JavaMail" 
            debug="0" privileged="true" > 
         </Context >
      

  9.   

    是CSDN的处理程序加上的‘多余的空格符’,抱歉!下面再试验一下HTML代码样式的内容是否会被加上‘多余’信息:D:\JavaMail\ 
               + WEB-INF\ 
                        + web.xml  
                        + classes\ 
                                 + beans\ 
                                        + CheckUser.class 在web.xml中配置Servlet,如下(注意不要加多余的空格符[你的配置中就有],以免造成未知错误): 
          <servlet> 
              <servlet-name>CheckUser</servlet-name> 
              <servlet-class>beans.CheckUser</servlet-class> 
          </servlet> 
          <servlet-mapping> 
              <servlet-name>CheckUser</servlet-name> 
              <url-pattern>/checkUser</url-pattern> 
          </servlet-mapping> 
    Tomcat 5.x下的配置: Tomcat 5.0\conf\Catalina\localhost下加了JavaMail.xml 
          <Context path="/JavaMail" docBase="D:\JavaMail"  
            debug="0" privileged="true">  
          </Context>
      

  10.   

        我是F:\study\specialty\Tomcat 5.0\webapps\JavaMail\WEB-INF\classes\Beans\checkUser.class
        在Tomcat 5.0\conf\Catalina\localhost 下的JavaMail.xml文件内容是
        <Context path="/JavaMail" docBase="D:\JavaMail"  
            debug="0" privileged="true"/>  没有空格
        在Tomcat 5.0\conf下的web.xml文件内容是
       <servlet>
           <servlet-name>checkUser</servlet-name>
           <servlet-class>Beans.checkUser</servlet-class>
        </servlet>
        <servlet-mapping>
              <servlet-name>checkUser</servlet-name>
              <url-pattern>/checkUser</url-pattern>
        </servlet-mapping>    也没有空格。
        这个问题搞了我整天了,超晕,在\JavaMail\WEB-INF下创建web.xml,我也试过,还是不行。
        我换了另一个servlet也还是同样的出错,所以我想应该是配置的问题。
        把路径\JavaMail\WEB-INF\classes\Beans\checkUser直接给tomcat虽然可行,但是request
       好象没有传递给servlet,要使用session时,又得生成新的session。好奇怪啊!
       请各位帮帮忙!
      

  11.   

       我把页面和试过的另一个servlet代码都贴出来,麻烦各位了,不过我想跟代码应该没关系。
       login页面:  <form action="/checkUser" method="post">
                   <table align='center'>
                   <tr><td>用户名: </td><td><input name="userName" type="text"></td></tr>
                  <tr><td>密码: </td><td><input name="userPsw" type="password"></td></tr>
           <tr><td align="center" colspan="2"><input id="loginBtn" type="submit" value="登录">
               <input id="resetBtn" type="reset" value="重置"></td></tr>
          </table>
           </form>
       test:    package Beans;
                import javax.servlet.http.*;
                import javax.servlet.*;
                import java.io.*;
                public class test extends HttpServlet{
                public void doPost(HttpServletRequest request,HttpServletResponse response)
                  throws ServletException,IOException{
                  PrintWriter out=response.getWriter();
       out.println("dfdfd");
                 }
                public void doGet(HttpServletRequest request,HttpServletResponse response)
                  throws ServletException,IOException{
                       this.doPost(request,response);
                    }
                 }  
      

  12.   

    你的Servlet的配置当然是在当前应用的web.xml进行配置。几点建议:包名全部小写,类名中每个单词的首字母大写。目前还不清楚你的配置中存在什么问题,所以暂时无解。
      

  13.   

    是啊,楼主的代码很不规范,包名要全用小写,类名的每个单词的首字母大写。建议去看一下 Java 的代码格式:http://developers.sun.com/sunstudio/products/archive/whitepapers/java-style.pdf
      

  14.   

       在\JavaMail\WEB-INF\web.xml文件主要内容改为
         <servlet>
           <servlet-name>CheckUser</servlet-name>
           <servlet-class>beans.CheckUser</servlet-class>
        </servlet>
        <servlet-mapping>
              <servlet-name>CheckUser</servlet-name>
              <url-pattern>/CheckUser</url-pattern>
        </servlet-mapping>
       包名改小写,类名改头字母大写,并重编译,调用servlet的页面也将/checkUser改为/CheckUser,
       还是出现了这样的错误:
       The requested resource (/CheckUser) is not available.
       
      

  15.   

       我找到问题在哪了,原来是action=CheckUser多了斜杆,找不到映射。
       谢谢各位大侠的救助,谢谢yaray的建议,包名小写,类名头字母大写,我会注意的
      

  16.   

    顺便也问个问题  学习servlet什么书好?