我开始使用Tomcat,这是我的第一次练习。我创建了一个TestServlet并将其放在C:\ tomcat-7.0.34 \ apache-tomcat-7.0.34 \ webapps \ ROOT \ WEB-INF \ classes下。重要的是,这是在一台计算机上工作,而在另一台计算机上不工作。我已经验证了类路径和路径是正确的。如果我删除TestServlet.class文件(放在classes目录下),tomcat在启动时会出错。如果没有,没关系。这意味着基于web.xml文件,加载了servelet?如果是这样,当我将其作为" localhost:8080 / TestServlet"调用时,为什么会出现HTTP 500错误。
WEB-INF下的web.xml文件如下:
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>TestServlet2</servlet-name>
<servlet-class>TestServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet2</servlet-name>
<url-pattern>/TestServlet2</url-pattern>
</servlet-mapping>
我的TestServlet代码如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {...
我很沮丧 - 花了差不多8小时试图解决这个问题..
非常感谢帮助。
完整追踪: 信息:ContextListener:contextInitialized() 2016年2月9日下午11:58:18 org.apache.catalina.core.ApplicationContext日志 信息:SessionListener:contextInitialized() 2016年2月9日下午11:58:18 org.apache.catalina.core.ApplicationContext日志 INFO:ContextListener:attributeAdded(&#39; org.apache.jasper.compiler.TldLocationsCache&#39;,&#39; org.apache.jasper.compiler.TldLocationsCache@71ccdf3d') 2016年2月9日下午11:58:56 org.apache.catalina.core.ApplicationContext日志 信息:将servlet TestServlet标记为不可用 2016年2月9日11:58:56 org.apache.catalina.core.StandardWrapperValve调用 SEVERE:为servlet TestServlet分配异常 java.lang.ClassNotFoundException:TestServlet 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532) 在org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133) 在org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1137) 在org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:858) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589) 在org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run(AprEndpoint.java:1822) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) 在java.lang.Thread.run(未知来源)
对不起,最后,我发现了这个问题..由于某种原因,&#34;类&#34;目录是cap&#34; Classes&#34;。一旦我重命名它,它就有效了!