powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет
42 сообщений из 42, показаны все 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
HelloWorld сервлет
    #39056654
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunito. Я только не пойму, как такое может быть на винде, где пути регистронезависимы О_о
Tomcat и JVM - это не совсем винда.

сказано блюсти регистр - блюди. Сильно помогает
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056707
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoЯ использую eclipse
уверен?
Код: java
1.
Menu --> NewPrj - Web - Dynamic Web Prj..... target=server Tomcat версии XXXXX


так?
))
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056711
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилдействительно - unix сразу изучать нужно было
ты только подтвердил, что всё относительно и шаблонно).
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056712
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123daunitoЯ использую eclipse
уверен?
Код: java
1.
Menu --> NewPrj - Web - Dynamic Web Prj..... target=server Tomcat версии XXXXX


так?
))
хм, да
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056714
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На рабочем компе получилось. На домашнем теперь все время 404, уже без ошибки ClassNotFound. Я с ума сойду скоро
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056715
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoхм, да
ну а дальше?
Там 4 шага и сервлет готов.
IDE надо изучать тоже.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056716
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunito. Я только не пойму, как такое может быть на винде, где пути регистронезависимы О_о
Легко. Пути регистронезависимы, а строки - нет.
Получаешь список файлов/каталогов и ищешь сравнением строк. На любом ЯП получается регистрозависимый путь.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056726
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
по хорошему тот кто ищет должен искать регистронезависимо для регистронезависимой ОСи.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056727
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да почему 404???

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">
  
  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  
  <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>
  
</web-app>



путь к файлу Tomcat 7.0\webapps\ROOT\WEB-INF\classes\HelloWorld.class
что опять не так-то?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunito,
правый клик на проекте - new servlet?
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056732
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoчто опять не так-то?
найди не древние манускрипты, а пример для твоей IDE.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056737
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123по хорошему тот кто ищет должен искать регистронезависимо для регистронезависимой ОСи.... что создаст неприятные грабли кроссплатформенной среде.
Если соблюдать регистр, то приложение можно перенести с винды на юникс и обратно простым копированием.
Если не соблюдать - начнутся загадочные ошибки.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056738
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunitoчто опять не так-то?Читайте логи - там всё написано.
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056743
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov... что создаст неприятные грабли кроссплатформенной среде.
а кому счас легко?
Винда медленно но верно поворачивается к пользователю (программисту).
- файл 8 символов --> 250 --> две точки в названии --> пробелы --> запятые в названии --> ...
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056752
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все, разобрался. В webapps была папка HelloWorld. Удалил и все заработало. Как все в java сложно-то, после C# и Oracle... Куча неочевидных граблей
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056754
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123по хорошему тот кто ищет должен искать регистронезависимо для регистронезависимой ОСи.
какая такая регистронезависимая ОС?

на всяк - напомню о наличии такого забавного флажка, как FILE_FLAG_POSIX_SEMANTICS
...
Рейтинг: 0 / 0
HelloWorld сервлет
    #39056757
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovPetro123по хорошему тот кто ищет должен искать регистронезависимо для регистронезависимой ОСи.... что создаст неприятные грабли кроссплатформенной среде.
Если соблюдать регистр, то приложение можно перенести с винды на юникс и обратно простым копированием.
Если не соблюдать - начнутся загадочные ошибки.

А еще есть вариант с WAR, в котором имена файлов регистрозависимые независимо от "регистрозависимости" ОСи.
Не-не. Сказано "искать в /WEB-INF/classes" - пусть ищут только в /WEB-INF/classes. Никаких Classes и CLASSES нам не надо.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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