Tomcat: класс не найден, исключение - PullRequest
0 голосов
/ 05 апреля 2011

Я разрабатываю сервлет, работающий на Tomcat 6 с использованием Eclipse в качестве IDE.

Основной путь веб-приложения - "Calcolatrice", а также имя идентификатора сервлета "Calcolatrice".

Когда я пытаюсь выполнить простую операцию get на сервлете, выдается следующее исключение:

javax.servlet.ServletException: Wrapper cannot find servlet class as.unibo.Calcolatrice or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:680)

root cause

java.lang.ClassNotFoundException: as.unibo.Calcolatrice
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:680)

Что я не могу понять, так это то, почему пакет, где находится сервлет "as.unibo.polac.сервер ", но Tomcat ищет его в другом пакете" as.unibo ".

Что может быть причиной этой проблемы?

[EDIT]

Это содержимое моего файла 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">
  <display-name>Calcolatrice</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>Calcolatrice</display-name>
    <servlet-name>Calcolatrice</servlet-name>
    <servlet-class>as.unibo.Calcolatrice</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Calcolatrice</servlet-name>
    <url-pattern>/Calcolatrice</url-pattern>
  </servlet-mapping>

</web-app>

Это правильно?

1 Ответ

3 голосов
/ 05 апреля 2011

Поскольку ваш сервлет находится в пакете as.unibo.polac.server, ваш web.xml должен быть:

....
  <servlet>
    <description></description>
    <display-name>Calcolatrice</display-name>
    <servlet-name>Calcolatrice</servlet-name>
    <servlet-class>as.unibo.polac.server.Calcolatrice</servlet-class>
  </servlet>

.....

Неправильный путь к классу в вашем файле web.xml. Обновите его.

...