Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет / 25 сообщений из 42, страница 1 из 2
19.09.2015, 18:23
    #39056121
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Начал изучать сервлеты, и как полагается, с простого 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
19.09.2015, 19:12
    #39056168
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
И еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
...
Рейтинг: 0 / 0
19.09.2015, 20:21
    #39056204
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
поставь netbeans - он тебе поможет разобраться , что к чему
...
Рейтинг: 0 / 0
19.09.2015, 20:27
    #39056209
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
daunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
Где вылазит? В логах или в ответе?
...
Рейтинг: 0 / 0
19.09.2015, 20:35
    #39056215
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Что-то меня CLASSES большими буквами смущает.
...
Рейтинг: 0 / 0
19.09.2015, 21:41
    #39056263
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
maytondaunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.
Где вылазит? В логах или в ответе?
в ответе, на странице
...
Рейтинг: 0 / 0
19.09.2015, 21:42
    #39056265
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Alexander A. SakЧто-то меня CLASSES большими буквами смущает.
у меня винда
...
Рейтинг: 0 / 0
19.09.2015, 23:05
    #39056317
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
daunitoAlexander A. SakЧто-то меня CLASSES большими буквами смущает.
у меня винда
Справедливое замечание. Сделай-ко буквы как положено.
...
Рейтинг: 0 / 0
20.09.2015, 02:27
    #39056374
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
mayton,

сделал, не помогло. Та же ошибка :(
...
Рейтинг: 0 / 0
20.09.2015, 07:11
    #39056401
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
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
20.09.2015, 07:46
    #39056405
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
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
20.09.2015, 09:15
    #39056425
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
daunito,
ты уверен что тебе не стоит изучать IDE для сервлетов?
Или у тебя много времени?
...
Рейтинг: 0 / 0
20.09.2015, 09:20
    #39056426
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Alexander A. SakПозвольте не поверить. /WEB-INF/classes определено спецификациейДа, пардоньте - попутал со структурой ${catalina.base}.
Тогда ставлю на класс в пакете и отсутствие "нужных каталогов".
...
Рейтинг: 0 / 0
20.09.2015, 09:24
    #39056427
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Petro123ты уверен что тебе не стоит изучать IDE для сервлетов?Любой "Привет, мир" надо сделать ручками.
Просто для того, чтобы понимать "как это устроено".
...
Рейтинг: 0 / 0
20.09.2015, 09:38
    #39056435
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Basil A. SidorovPetro123ты уверен что тебе не стоит изучать IDE для сервлетов?Любой "Привет, мир" надо сделать ручками.
Просто для того, чтобы понимать "как это устроено".
помню мне точно также советовали изучать DOS и его соманды.
Эти советы очень относительны.
...
Рейтинг: 0 / 0
20.09.2015, 09:39
    #39056437
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
OFF
Basil A. Sidorov,
зачем мне, или ему на данном этапе знать как компилируется сервлет?
Или как компилируется сырой запрос в самом СУБД?
...
Рейтинг: 0 / 0
20.09.2015, 09:41
    #39056438
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Hello World должен делаться за 3 поста в форуме. Если больше, значит что-то не так данном королевстве.
...
Рейтинг: 0 / 0
20.09.2015, 09:54
    #39056440
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Сподобился перечитать урок ...
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
20.09.2015, 09:56
    #39056441
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Petro123зачем мне, или ему на данном этапе знать как компилируется сервлет?Это фундамент знаний любого разработчика, поскольку компиляция сервлета ничем не отличается от компиляции "обычного класса".Или как компилируется сырой запрос в самом СУБД?Совсем не в тему, но тоже полезно, чтобы не делать некоторых глупостей.
...
Рейтинг: 0 / 0
20.09.2015, 10:05
    #39056446
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
daunitoИ еще не пойму, почему в первый раз вылазит ClassNotFoundException, а в последующие, пока не перезапустишь томкат, The requested resource is not available.Контейнер строит ресурсы и получает исключение, т.е. ресурс не создаётся.
При последующих обращениях получаем 404 на всё несуществующее.
...
Рейтинг: 0 / 0
20.09.2015, 10:12
    #39056451
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Basil A. SidorovЭто фундамент знаний любого разработчика, поскольку компиляция сервлета ничем не отличается от компиляции "обычного класса".
не вопрос. Пусть изучает прямо щщас. ).
Мы, так сказать совращали его на другой путь)).
...
Рейтинг: 0 / 0
20.09.2015, 12:58
    #39056567
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Petro123помню мне точно также советовали изучать DOS и его соманды.
Эти советы очень относительны.
действительно - unix сразу изучать нужно было
...
Рейтинг: 0 / 0
20.09.2015, 14:08
    #39056634
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Petro123daunito,
ты уверен что тебе не стоит изучать IDE для сервлетов?
Или у тебя много времени?

Я использую eclipse. В частности пишу сейчас spring-mvc приложение. И в результате получаю ту же самую ошибку, что класс не найден. Вот решил вообще с самого простого начать, чтобы понимать как должно деплоиться приложение. Куда уж проще, один java файл с одним классом, скомпилировал, положил в папку и нифига не работает.
...
Рейтинг: 0 / 0
20.09.2015, 14:13
    #39056641
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
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
20.09.2015, 14:27
    #39056650
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HelloWorld сервлет
Господа! Спасибо всем, заработало. Я папку CLASSES переименовал в Classes. Сейчас сделал все маленькими буквами, перезагрузил томкат и заработало. Я только не пойму, как такое может быть на винде, где пути регистронезависимы О_о
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / HelloWorld сервлет / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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