tomcat 部署应用时报错

206 阅读1分钟

当我向 tomcat 中部署我的第一个servlet时, 遇到了如下报错

20-Jan-2024 13:50:05.149 信息 [http-nio-8080-exec-1] org.apache.catalina.core.ApplicationContext.logservlet[HelloWorldServlet]标记为不可用
20-Jan-2024 13:50:05.149 严重 [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke 分配异常的servlet [HelloWorldServlet]
	java.lang.ClassNotFoundException: org.servltePra.chaptor1.HelloWorldServlet
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1449)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
		at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:535)
		at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:516)
		at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
		at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1071)
		at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:789)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1762)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.base/java.lang.Thread.run(Thread.java:834)

此时已经将手动编译好的HelloWorldServlet.class文件放到了webapps\ch01\WEB-INF\classes 下, 可是仍然没有找到.
检查web.xml后,发现指定的 servlet-class 类名是正确的org.servltePra.chaptor1.HelloWorldServlet
但是却发现这里配置的有包的路径,所以尝试将包的的路径目录创建好, 将class文件放到包路径下, 重新启动tomcat就可以了webapps\ch01\WEB-INF\classes\org\servltePra\chaptor1\HelloWordServlet.class