在Tomcat6中,我应该把ServletJAR文件放在哪里?

在Tomcat6中,我应该把ServletJAR文件放在哪里?,tomcat,servlets,classpath,tomcat6,Tomcat,Servlets,Classpath,Tomcat6,我在jar文件中有一个servlet,我想将它部署到我的Tomcat6实例。我做了以下几件事: 在my root web.xml中添加了servlet声明 在根web.xml中添加了servlet映射 将我的jar文件放入/tomcat/lib 重新启动我的服务器 当我指向我的servlet时,我得到了以下错误 javax.servlet.ServletException: Wrapper cannot find servlet class com.mypackage.myServlet or

我在jar文件中有一个servlet,我想将它部署到我的Tomcat6实例。我做了以下几件事:

  • 在my root web.xml中添加了servlet声明
  • 在根web.xml中添加了servlet映射
  • 将我的jar文件放入/tomcat/lib
  • 重新启动我的服务器
  • 当我指向我的servlet时,我得到了以下错误

    javax.servlet.ServletException: Wrapper cannot find servlet class com.mypackage.myServlet or a class it depends on
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
        org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        java.lang.Thread.run(Unknown Source)
    
    root cause
    
    java.lang.ClassNotFoundException: com.mypackage.myServlet
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
        org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        java.lang.Thread.run(Unknown Source)
    
    这说明我的web.xml配置正确,并且我成功地找到了正确的URL模式。所以问题是。。。我应该在Tomcat6中将ServletJAR文件放在哪里,以便在类路径中获取它


    TIA

    您的servlet JAR文件位于WAR的
    lib
    目录中,而不是位于顶级Tomcat
    lib
    目录中,即

    <war-root>
       /WEB-INF
          web.xml
       /lib
          myservlet.jar
    
    
    /WEB-INF
    web.xml
    /解放党
    myservlet.jar
    
    虽然这不是正常做法,但它应该可以正常工作。因为它在理论上应该是可行的,所以我已经在本地对它进行了测试,并且运行良好(Tomcat6.0.20和7.0.5)。您可能在
    中输入了错误。servlet的类名即以小写字母开头,这与。试一试

    com.mypackage.MyServlet
    
    相反

    如果这不能解决问题,那么使用一些ZIP/RAR工具解压JAR,并验证
    com/mypackage/MyServlet.class
    文件是否存在


    如果文件确实存在,那么您可能正在使用某个IDE,该IDE在一个由IDE控制/管理的Tomcat副本中只有
    Tomcat/lib
    JAR的特定子集。尝试在命令控制台中部署并运行Tomcat standalone。

    这样我就不能将servlet部署为jar文件了?默认的jspservlet是如何工作的?为什么我不能做同样的事呢?谢谢,我再去看看。出于匿名的目的,我保护了真实的包裹名称,但我很容易打错。这让我找到了正确的位置。如前所述,您可以在lib文件夹中放置一个servlet jar,并将root web.xml配置为指向它。我遇到的问题不是拼写问题,而是服务器上的缓存问题。我对所有缓存的资源进行了硬清理,然后启动,我的配置工作正常。我的IDE(EclipseHelios)并没有完全清理,我必须自己清理(tomcat文件夹下的工作目录)。“现在一切都好了。”波佐,有什么积极的东西可以添加到讨论中吗?你的答案是什么?
    <servlet-class>com.mypackage.MyServlet</servlet-class>