Ошибка: Wrapper не может найти класс сервлета VendorRegistration или класс, от которого он зависит - PullRequest
2 голосов
/ 01 марта 2011

Я новичок, который также искал решение той же проблемы.Я выполнил шаги, которые Элитный Джентльмен и Божо обрисовали в общих чертах здесь .Итак, прежде всего, большое спасибо, ребята.Но у меня все еще есть та же проблема.Теперь, согласно моему пониманию и реализации, моя ситуация выглядит следующим образом:

Мой класс сервлетов VendorRegistration доступен в папке: C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ VendorReg \ WEB-INF\ classes

Мой файл web.xml находится по адресу: C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ VendorReg \ WEB-INF \

Однако мне все еще кажется, чтополучение ошибки:

**** HTTP Status 500 - тип Описание сообщения отчета об исключении Сервер обнаружил внутреннюю ошибку (), которая не позволила ему выполнить этот запрос.исключение javax.servlet.ServletException: Оболочка не может найти класс сервлета VendorRegistration или класс, от которого зависит ****

Я также добавил свой файл web.xml ниже для вашего рассмотрения:

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

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  <servlet>

    <servlet-name>VendorRegistration</servlet-name>
    <servlet-class>VendorRegistration</servlet-class>

  </servlet>

    <servlet-mapping> 
    <servlet-name>VendorRegistration</servlet-name> 
    <url-pattern>/VendorRegistration</url-pattern> 
    </servlet-mapping> 

</web-app>

Я пытаюсь получить доступ к сервлету через URL: http://localhost:8080/VendorReg/VendorRegistration. Что мне не хватает?Я скомпилировал файл .class еще до того, как установил Apache.И, следовательно, непосредственно скопировал вставленный файл класса в папку.Может ли это быть проблемой?

Ответы [ 6 ]

5 голосов
/ 03 марта 2011

Сервлет или одна из его зависимостей отсутствуют в пути к классам.

Прежде всего, всегда помещайте в пакет классы Java, а также сервлеты. Классы без пакетов невидимы для классов в обычном пакете. Для сервлетов это работает только в определенных средах. Вы не хотите зависеть от этого.

package com.example;

public class VendorRegistration extends HttpServlet {
    // ...
}

В этом пакете скомпилированный файл .class должен заканчиваться на /WEB-INF/classes/com/example/VendorRegistration.class. Не забудьте соответственно изменить соответствующую запись <servlet-class> в web.xml.

<servlet>
    <servlet-name>VendorRegistration</servlet-name>
    <servlet-class>com.example.VendorRegistration</servlet-class>
</servlet>

Если это не поможет, то вы должны поместить классы или JAR-файлы, содержащие (in) прямые классы, которые указаны в любом из операторов import сервлета, также в /WEB-INF/classes (для .class файлов) или /WEB-INF/lib (для файлов JAR). Основная причина в трассировке стека исключений должна указывать, какой именно это класс. Просто прочитайте трассировку стека.

Смотри также:

2 голосов
/ 21 декабря 2012

Начиная с версии Tomcat 6.0, <url-pattern>

<servlet>
<servlet-name>VendorRegistration</servlet-name>
<servlet-name>VendorRegistration</servlet-name>
</servlet>

<servlet-mapping>
       <servlet-name>VendorRegistration</servlet-name>
       <url-pattern>/servlets/servlet/VendorRegistration</url-pattern>
</servlet-mapping>

изменяется в моем случае!

1 голос
/ 27 сентября 2011

В моем случае проблема началась, когда я сделал копию / вставку примера класса HelloWorld.java из другого проекта.Наконец, я решил это, просто создав новый пакет, затем новый HelloWorld.java и скопировав только код для метода doGet().

Затем я перезапустил сервер и запустил http://localhost:8080/mltest/HelloWorld

И это сработало!

0 голосов
/ 11 апреля 2016

Вот как я решил проблему, когда у меня было то же исключение с вашим.

  1. Убедитесь, что вы добавили правильные библиотеки, нам нужно добавить библиотеку Tomcat. В начале я только что добавил сервлет-api.jar, но кто-то сказал мне, что это неправильный путь. Возможно, когда вы реализовали проект в tomcat, у него возникли конфликты с Tomcat. enter image description here

  2. Убедитесь, что ваш проект в нужной папке, %Tomcat_HOME%\webapps\%projectName\WEB-INF\classes\.....

  3. Убедитесь, что файл web.xml находится в нужной папке и в правильной форме, %Tomcat_HOME%\webapps\%projectName\WEB-INF\web.xml

  4. Перезагрузите приложение в Tomcat.

  5. Доступ к сервлету через URL: http://localhost:port/%projectName%

0 голосов
/ 19 июня 2014

Я тоже столкнулся с той же проблемой.На самом деле одна из моих программ, которая работала уже после нескольких изменений, показала мне эту ошибку.Я даже отменил изменения, но это случилось со мной.Наконец-то я нашел для этого подходящее решение для моего сценария.

SIMPLE:

1.Просто попробуйте очистить ваш проект и запустить снова.Если он показывает ту же ошибку, и если вы уверены, что с вашим кодом проблем нет, то

2.Включите пункт меню «Автоматически строить» в меню «Проект» и попробуйте очистить ваш проект.На этот раз это сработало для меня.

Слышал, это потому, что когда мы вносим некоторые изменения и запускаемся, eclipse также вносит некоторые изменения в свой фон.Таким образом, даже если мы отменим изменения, затмение, возможно, не отменило изменения, которые оно сделало в фоновом режиме.Таким образом, выполнение этих 2 шагов позволит убедиться, что оно совпадает с изменением пользователя и изменением фона.

Надеюсь, это поможет и решит вашу проблему.

0 голосов
/ 03 марта 2011

Боюсь, вы ошиблись, пытаясь получить доступ к классу сервлетов напрямую.

Как правило, URL должен быть любым из ваших txt, jsp, html файлов в папке вашего приложения, но сервлет используется для ответа на ваш запрос «POST» или «Get» со стороны клиента, доступ к нему напрямую через URL невозможен .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...