【发布时间】:2010-07-07 23:45:58
【问题描述】:
我已经把源码编译成Files类,然后放到文件夹里:
Tomcat 5.5\WEB-INF\ROOT\classes\Files.class
并将其添加到web.xml 文件中:
<servlet>
<servlet-name>Files</servlet-name>
<servlet-class>Files</servlet-class>
</servlet>
但是当我尝试访问 URL http://localhost:8080/Files 时,我从 Tomcat 收到了这个错误:
Tomcat 5.5 404 Error http://img251.imageshack.us/img251/5042/tomcat404.png
更新:添加 <servlet-mapping> 后,我现在收到以下错误:
exception
javax.servlet.ServletException: Error allocating a servlet instance
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1287)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.NoClassDefFoundError: IllegalName: /Files
java.lang.ClassLoader.preDefineClass(Unknown Source)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1960)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:931)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1405)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1287)
java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
请注意,不鼓励将 Servlet 类放在默认包中。 Tomcat 在这方面是宽松的,但在某些 Tomcat 配置和其他 servlet 容器中,您可能会面临无法定位/加载 servlet 的风险。始终将要由其他类加载/导入的类放在包中。
-
我知道,但这只是一个简单的测试。那我就没用过包了。
-
这可能是这个问题的根本原因。在
/logs中读取服务器的启动日志。 -
@BalusC:为了确定,文件是这样的:freetexthost.com/ys4x6i116n