![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
chaZm |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.4.2008 Репутация: нет Всего: нет |
Доброго времени суток. Начал заниматься разработкой сервлетов и javaEE вообще. Я долго работал с asp.net, так что в общем то представляю технологию веб программирования.
Использую Eclipse ide , tomcat Пошел на www.ibm.com/developerworks для материалов для начинающих. Исходя из этого урока http://www.ibm.com/developerworks/ru/libra...jax1/index.html создал простой сервлет и простую html страницу которая на этот сервлет отправляет аяксовый запрос. Имеется такая страничка
и сервлет
Я думаю что проблема в общем подходе - что то не так настраиваю. Хтмл там и аякс пока не причем совсем. И собственно проблема в том что Tomcat как судя по всему не видит класс сервлета. Или не может его инициализиорвать. текст ошибки такой. И ошибка возникает при обращении по ссылке из маппинга(http://localhost:8081/testWeb/TestJava) в web.xml (запрос по кнопке на хтмл странице просто 404 возвращает). exception javax.servlet.ServletException: Wrapper cannot find servlet class java.test.web.TestJava 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:852) 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(Unknown Source) root cause java.lang.ClassNotFoundException: java.test.web.TestJava org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 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:852) 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(Unknown Source) Я добавил в проект jar servlet-api из папки томката к проекту. И ошибок до этапа запроса нет. И уже день бьюсь над этим. И кажется упускаю какую то мелочь примитивную.ПРосто понимания чего то не хватает. Я еще кое что попробовал - сдела сервлет не используя свой класс - просто новый сервлет на основе GenericServlet . И при попытке вызова его в браузере javax.servlet.ServletException: Error instantiating servlet class javax.servlet.GenericServlet 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:852) 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(Unknown Source) root cause java.lang.InstantiationException sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) java.lang.Class.newInstance0(Unknown Source) java.lang.Class.newInstance(Unknown Source) 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:852) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) Активно прошу помощи ) Что я упускаю? может как то не так проект собираю? Спасибо и извиняюсь за объемный пост. |
||||
|
|||||
SlavaSemushin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 13.4.2010 Где: Новосибирск Репутация: 1 Всего: 1 |
- У вас Tomcat не может найти класс java.test.web.TestJava, проверьте, что существует файл WEB-INF/classes/java/test/web/TestJava.class
- Покажите ещё web.xml на всякий случай - Странно, что у вас сервлет замаплен на адрес /testWeb/TestJava, а POST-запрос вы отправляете на /TestJava -- так и должно быть? |
|||
|
||||
chaZm |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.4.2008 Репутация: нет Всего: нет |
Спасибо за ответ. Итак.
Кстати тут еще вопрос возникает. Я подключил к Эклипс томкат через servers-new. и в дереве проектов WEB-INF/classes папки даже не было. Я думал что Эклипс сам должен генерировать подобные файлы, но их там не было. Были в папке .build. Это видимо не одно и то же ? я глянул в структуру примеров которые с томкатом идут и перенес к себе в проект файлы классов в WEB-INF/classes/java/test/web/TestJava.class. И ничего не поменялось. Нужно ли в WEB-INF/classes/ создавать вручную все папки, перенося из build или это автоматически делается при компиляции ? И мне еще тут подумалось. Я запускаю проект "как в visual studio".То есть жму run и проверяю. Может нужно в папку с томкатом вручную все переносить и там смотреть ?Или это одно и то же получается?
Обратите внимание на GenServlet . Он производится от класса javax.servlet.http.HttpServlet - я так понимаю это стандартный класс и таким образом все должно "из коробки" заработать. В моем случае не происходит ничего (
Да, тут может быть косяк. Спасибо. НО я все таки думаю что это к проблеме пока не относится - напрямую вызов сервлета ведь не работает :( Спасибо за помощь, надеюсь получится разобраться! |
||||||||
|
|||||||||
chaZm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.4.2008 Репутация: нет Всего: нет |
Я определенно делаю что тот не так. Видимо дело в какой то настройке. Сделал по гайду для полных чайников примитивный сервлет и результат такой же. не находится класс.
java.lang.ClassNotFoundException: java.test.hello.HelloJava org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 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:852) 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(Unknown Source) Причем я проверил - я перенес servlet-api в web-inf\lib . Может быть дело в том что я создаю new-project-dynamic web project ? у меня нет new Tomcat project. Может поэтому classes не создается сразу? Я заметил что при создании проекта IDE спрашивает output path и он по дефолту в build\classes стоит. Я поменял на web-inf\classes ну как видно выше не особо помогло. |
|||
|
||||
chaZm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.4.2008 Репутация: нет Всего: нет |
Хм. есть еще новости
![]() Нашел я кажется часть своей ошибки. Установил плагин для томката - http://www.eclipsetotale.com/tomcatPlugin.html#A4 и у меня в списке проектов появился New-Java/Tomcat project . И если создавать его - то сервлет работает !!!! Сервлет стандартный, но тем не менее, работает. ПРоблема в том что елсли скопировать библиотеки из томкат проекта в мой - все равно не работает. Созданный томкат проект я так понимаю не веб(хотя бы потому что не создает web.xml, нет папки Meta-inf и его нельзя компилировать как страницу. Да и перелючает он эклипс на представление Java из JavaEE). Я пытался добавить в томкат проект хтмл страницу - но запустить ее нельзя. Он предлагает только как Java application и java aplet. Еще обнаружил что папка classes на самом деле создается. ВОт только эклипс отказывается ее в иерархии проекта показывать :( но я думаю это не критично, раз он файлы туда правильные все таки добавляет Кроме того кардинальной разницы между моим проектом и томкатовским я не вижу. Тем не менее сервлеты не работают :( Жду совета ![]() Это сообщение отредактировал(а) chaZm - 7.6.2010, 13:12 |
|||
|
||||
chaZm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.4.2008 Репутация: нет Всего: нет |
Всем спасибо кажется я все решил. Ну точнее все сделал заново - аккуратно, без шума и пыли
![]() Я понял очевидную , наверное, вещь - не веб проект от веб проекта отличается наличием web.xml и обращаться к нему можно как к любому другому! В общем я сделал все заново на его основе и аяксовые запросы теперь работают!! Все отлично. Пока разбирался многое понял. ![]() Всем спасибо ! Буду копать дальше.. Думаю еще не раз появлюсь с глупыми вопросами ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |