tags:

views:

30

answers:

2

I am learning Servlets concept. Initially, I Tutorial referred to this link and working on the HelloWorld example.

On submission of the JSP form with the name and age I get the following errors. Kindly advise on what has to be done.

The locations of my files placed are as follows,

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\servletexmple\hello.jsp

C:\Program Files\Apache Software Foundation\Tomcat5.5\webapps\servletexmple\example\HelloServlet.class

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\servletexmple\WEB-INF\web.xml

Exception:

javax.servlet.ServletException: Wrapper cannot find servlet class example.HelloServlet or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
java.lang.Thread.run(Unknown Source)

Root Cause:
java.lang.ClassNotFoundException: example.HelloServlet
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
java.lang.Thread.run(Unknown Source)

My web.xml file contains as follows,

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/servletexmple</url-pattern>
</servlet-mapping>
</web-app>
+2  A: 

You must put your class files in webapps/servletexmple/WEB-INF/classes. There you should follow the package structure. I.e. place the file in

webapp/servletexample/WEB-INF/classes/example/HelloServlet

in your web.xml you should use the exact fully qualified name of the servlet. I.e. example.HelloServlet. For more info about packages in Java see here

Bozho
So, any modifications should be made in xml file?
LGAP
no. (but show me your web.xml, just in case)
Bozho
I have updated my question with web.xml
LGAP
Now its working. Thanks Bozho :) I might require your help in the task that I am going to perform the very next moment from now.
LGAP
+1  A: 

Your root cause tells you that example.HelloServlet isn't found.

That's because, in your web.xml, you're never declared example.HelloServlet.

Change your current declaration:

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>classes.HelloServlet</servlet-class>
</servlet>


to:

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>example.HelloServlet</servlet-class>
</servlet>
The Elite Gentleman