我在 jar 文件中有一个 servlet,我想将其部署到我的 Tomcat 6 实例。我做了以下事情:
- 在我的根 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 模式。所以问题是……我应该将 servlet jar 文件放在 Tomcat 6 中的什么位置,以便在 CLASSPATH 中获取它?
TIA
最佳答案
您的 servlet JAR 文件位于 WAR 的 lib
目录中,而不是位于顶级 Tomcat lib
目录中,即
<war-root>
/WEB-INF
web.xml
/lib
myservlet.jar
关于tomcat - 将 servlet jar 文件放在 Tomcat 6 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160113/