Как исправить следующую ошибку при использовании сервлета? - PullRequest
0 голосов
/ 13 сентября 2010

Я изучаю концепцию сервлетов.Первоначально я Tutorial ссылался на эту ссылку и работал над примером HelloWorld.

При отправке формы JSP с именем и возрастом я получаю следующие ошибки.Пожалуйста, посоветуйте, что нужно сделать.

Расположение моих файлов:

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)

Мой файл web.xml содержит следующее:

<?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 ]

2 голосов
/ 13 сентября 2010

Вы должны поместить файлы вашего класса в webapps/servletexmple/WEB-INF/classes. Там вы должны следовать структуре пакета. То есть поместите файл в

WebApp / servletexample / WEB-INF / классы / пример / HelloServlet

в вашем web.xml вы должны использовать точное полное имя сервлета. То есть example.HelloServlet. Для получения дополнительной информации о пакетах в Java см. здесь

1 голос
/ 13 сентября 2010

Ваша основная причина говорит вам, что example.HelloServlet не найден.

Это потому, что в вашем файле web.xml вы никогда не объявляетесь example.HelloServlet.

Измените текущую декларацию:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...