powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет
25 сообщений из 42, страница 1 из 2
HelloWorld сервлет
    #39056121
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал изучать сервлеты, и как полагается, с простого HelloWorld'а, чтобы пощупать. Делал по шагам уже по трем статьями, и всегда в итоге ClassNotFound Exception. Томкат 7.0. Делал все в точности как описано тут http://www.tutorialspoint.com/servlets/servlets-first-example.htm
Скомпилировал класс, положил его в e:\Program Files\Tomcat 7.0\webapps\ROOT\WEB-INF\CLASSES\, в e:\Program Files\Tomcat 7.0\webapps\ROOT\WEB-INF\web.xml прописал

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<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_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <servlet>
   <servlet-name>HelloWorld</servlet-name>
   <servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>HelloWorld</servlet-name>
   <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
  
  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  
</web-app>


Запускаю томкат, набираю в браузере http://localhost:8080/HelloWorld и получаю java.lang.ClassNotFoundException: HelloWorld
Я не понимаю, что я делаю не так-то? Может кто-нибудь объяснить? Может примеры для других версий томката?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056168
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056204
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставь netbeans - он тебе поможет разобраться , что к чему
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
Где вылазит? В логах или в ответе?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056215
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то меня CLASSES большими буквами смущает.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056263
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytondaunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
Где вылазит? В логах или в ответе?
в ответе, на странице
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056265
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakЧто-то меня CLASSES большими буквами смущает.
у меня винда
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056317
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoAlexander A. SakЧто-то меня CLASSES большими буквами смущает.
у меня винда
Справедливое замечание. Сделай-ко буквы как положено.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056374
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

сделал, не помогло. Та же ошибка :(
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056401
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoНачал изучать сервлеты, и как полагается, с простого HelloWorld'а, чтобы пощупать. Делал по шагам уже по трем статьями, и всегда в итоге ClassNotFound Exception. Томкат 7.0. Делал все в точности как описано тут http://www.tutorialspoint.com/servlets/servlets-first-example.htm
Скомпилировал класс, положил его в e:\Program Files\Tomcat 7.0\webapps\ROOT\WEB-INF\CLASSES\Очень плохо выполнять примеры на одной версии Tomcat, читая уроки от другой.
В версии 5.5 Tomcat использовал classes (и маленькими буквами) для "классов в структуре каталогов" и lib для war-архивов.
Начиная с версии 6.0 используется только lib.
Поэтому:
1. Классы помещаются в lib "на общих основаниях";
2. Классы помещаются в lib с соблюдением каталожной структуры, диктуемой пакетом класса.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056405
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВ версии 5.5 Tomcat использовал classes (и маленькими буквами) для "классов в структуре каталогов" и lib для war-архивов.
Начиная с версии 6.0 используется только lib.


Позвольте не поверить. /WEB-INF/classes определено спецификацией:

Java™ Servlet Specification 3.0The contents of the WEB-INF directory are:
- The /WEB-INF/web.xml deployment descriptor.
- The /WEB-INF/classes/ directory for servlet and utility classes. The classes in this directory must be available to the application class loader.
- The /WEB-INF/lib/*.jar area for Java ARchive files.
These files contain servlets, beans, static resources and JSPs packaged in a JAR file and other utility classes useful to the Web application. The Web application class loader must be able to load classes from any of these archive files. The Web application class loader must load classes from the WEB-INF/classes directory first, and then from library JARs in the WEB-INF/lib directory.

В доке Томката говорят то же самое: https://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056425
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunito,
ты уверен что тебе не стоит изучать IDE для сервлетов?
Или у тебя много времени?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056426
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakПозвольте не поверить. /WEB-INF/classes определено спецификациейДа, пардоньте - попутал со структурой ${catalina.base}.
Тогда ставлю на класс в пакете и отсутствие "нужных каталогов".
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056427
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ты уверен что тебе не стоит изучать IDE для сервлетов?Любой "Привет, мир" надо сделать ручками.
Просто для того, чтобы понимать "как это устроено".
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056435
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovPetro123ты уверен что тебе не стоит изучать IDE для сервлетов?Любой "Привет, мир" надо сделать ручками.
Просто для того, чтобы понимать "как это устроено".
помню мне точно также советовали изучать DOS и его соманды.
Эти советы очень относительны.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056437
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF
Basil A. Sidorov,
зачем мне, или ему на данном этапе знать как компилируется сервлет?
Или как компилируется сырой запрос в самом СУБД?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056438
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello World должен делаться за 3 поста в форуме. Если больше, значит что-то не так данном королевстве.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056440
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сподобился перечитать урок ...
Cогласно спекам, публичным является service(), doXXXX() - защищённые и должны оставаться таковыми.
Пример ошибки, которая с лёгкостью обнаруживается аннотацией:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
package test;
import javax.servlet.http.HttpServlet;
import javax.servlet.HttpServletRequest;
import javax.servlet.HttpServletResponse;
public class Test
{
  @Override protected void
  doGet(
    req HttpServletRequest,
    resp HttpServletResponse
  ) throws
      java.io.IOException,
      javax.servlet.ServletException
  { ... }
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056441
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123зачем мне, или ему на данном этапе знать как компилируется сервлет?Это фундамент знаний любого разработчика, поскольку компиляция сервлета ничем не отличается от компиляции "обычного класса".Или как компилируется сырой запрос в самом СУБД?Совсем не в тему, но тоже полезно, чтобы не делать некоторых глупостей.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056446
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.Контейнер строит ресурсы и получает исключение, т.е. ресурс не создаётся.
При последующих обращениях получаем 404 на всё несуществующее.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЭто фундамент знаний любого разработчика, поскольку компиляция сервлета ничем не отличается от компиляции "обычного класса".
не вопрос. Пусть изучает прямо щщас. ).
Мы, так сказать совращали его на другой путь)).
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056567
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123помню мне точно также советовали изучать DOS и его соманды.
Эти советы очень относительны.
действительно - unix сразу изучать нужно было
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056634
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123daunito,
ты уверен что тебе не стоит изучать IDE для сервлетов?
Или у тебя много времени?

Я использую eclipse. В частности пишу сейчас spring-mvc приложение. И в результате получаю ту же самую ошибку, что класс не найден. Вот решил вообще с самого простого начать, чтобы понимать как должно деплоиться приложение. Куда уж проще, один java файл с одним классом, скомпилировал, положил в папку и нифига не работает.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056641
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСподобился перечитать урок ...
Cогласно спекам, публичным является service(), doXXXX() - защищённые и должны оставаться таковыми.
Пример ошибки, которая с лёгкостью обнаруживается аннотацией:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
package test;
import javax.servlet.http.HttpServlet;
import javax.servlet.HttpServletRequest;
import javax.servlet.HttpServletResponse;
public class Test
{
  @Override protected void
  doGet(
    req HttpServletRequest,
    resp HttpServletResponse
  ) throws
      java.io.IOException,
      javax.servlet.ServletException
  { ... }



поправил, не помогло. Ну и ошибка ClassNotFound. Думаю что в случае с неверным классификатором должно было бы быть что-то другое
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056650
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа! Спасибо всем, заработало. Я папку CLASSES переименовал в Classes. Сейчас сделал все маленькими буквами, перезагрузил томкат и заработало. Я только не пойму, как такое может быть на винде, где пути регистронезависимы О_о
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]