Скачал опен соурс проект(веб форум на джаве), пытаюсь разобраться как он устроен.
Обратил внимание, что выдает сообщение о том, что не может найти классы, вот например один из них:
import javax.servlet.http.HttpServletRequest;
И действительно servlet-api.jar не подключен, хотя в пом файле мэейвена указан в зависимостях. Сделал поиск HttpServletRequest.class — его нет нет в либ папке приложения в томкэте, и при этом приложение работает, от куда он может брать класс в данном случае?
Re: Класс не подключен, а приложение работает, почему?
MN>И действительно servlet-api.jar не подключен, хотя в пом файле мэейвена указан в зависимостях.
Покажи пом, как там зависимость подключена? Если ты в ИДЕЕ, то после первого открытия проекта надо сделать "Reimport all maven projects", чтобы ИДЕЯ настроила свой внутренний проект согласно мавеновским настройкам
MN> Сделал поиск HttpServletRequest.class — его нет нет в либ папке приложения в томкэте,
Плохо искал.
Re: Класс не подключен, а приложение работает, почему?
Здравствуйте, MaxNevermind, Вы писали:
MN>откуда он может брать класс в данном случае?
Я пока не очень силён в jee, но обычно следствие такое — раз работает, значит где-то находит. Но у вас, кажется, два вопроса. Первый, почему не собирается? и второй, почему всё-таки работает? Самый простой первый — не собирается, потому что не находит эту зависимость. Но прикол в том, что решение может быть в ответе на второй вопрос — где разрешается зависимость при запуске? Я бы советовал смотреть файлы настроек сервера приложений, там бывают прописаны такие зависимости, которых нет в сборке, потому что сборка и запуск — два разных процесса.
Re: Класс не подключен, а приложение работает, почему?
12.09.2013 9:10, MaxNevermind пишет:
> Скачал опен соурс проект(веб форум на джаве), пытаюсь разобраться как он > устроен. > Обратил внимание, что выдает сообщение о том, что не может найти классы, > вот например один из них: > > import javax.servlet.http.HttpServletRequest;
> Класс не подключен, а приложение работает, почему?
Потому что он (как и другие классы jee api и не только) есть в либах
самого томкэта (не приложения). В мавене для такого указывается
scope=provided
--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Класс не подключен, а приложение работает, почему?
Здравствуйте, hrensgory, Вы писали:
H>12.09.2013 9:10, MaxNevermind пишет:
>> Скачал опен соурс проект(веб форум на джаве), пытаюсь разобраться как он >> устроен. >> Обратил внимание, что выдает сообщение о том, что не может найти классы, >> вот например один из них: >> >> import javax.servlet.http.HttpServletRequest;
>> Класс не подключен, а приложение работает, почему?
H>Потому что он (как и другие классы jee api и не только) есть в либах H>самого томкэта (не приложения). В мавене для такого указывается H>scope=provided
H>-- H>WBR, H>Serge.
Да, действительно, не знаю как сразу сам не заметил в папке либ томкэта лежит сервлет апи
Re[2]: Класс не подключен, а приложение работает, почему?
Причем в данном случае уже без версии, потому что версию он возьмёт из реестра зависимостей
MN>-проект собирается и работает без проблем
Если собирается, то в чём проблема? Не компилируется ИДЕ? Какая у тебя ИДЕ? Если Эклипс, выкини его на помойку, у него безобразная поддержка Мавена. Используй IDEA.
Re[3]: Класс не подключен, а приложение работает, почему?
Здравствуйте, avpavlov, Вы писали:
MN>>http://www.codesend.com/view/26db081829894ac583e9f4d929a32011/ MN>>Это корневой, проект включает несколько модулей, у них отдельные пом файлы, но сервлет здесь указан.
A>Он указан в секции dependencyManagement, это просто как реестр зависимостей в проекте.
A>Чтобы в конкретном модуле был доступен servlet api, в этом модуле надо явно указать в секции dependencies
A>
A><dependency>
A> <groupId>javax.servlet</groupId>
A> <artifactId>servlet-api</artifactId>
A> <scope>provided</scope>
A></dependency>
A>
A>Причем в данном случае уже без версии, потому что версию он возьмёт из реестра зависимостей
Так и есть, в пом файлах отдельных модулей.
MN>>-проект собирается и работает без проблем
A>Если собирается, то в чём проблема? Не компилируется ИДЕ? Какая у тебя ИДЕ? Если Эклипс, выкини его на помойку, у него безобразная поддержка Мавена. Используй IDEA.
Есть не проблема, есть задача — разобраться в том как работает проект, от и до, включая мэйвен.
С данным вопросом уже разобрался, всем спасибо!
Re[3]: Класс не подключен, а приложение работает, почему?
Здравствуйте, MaxNevermind, Вы писали:
MN>Здравствуйте, avpavlov, Вы писали:
A>> Какая у тебя ИДЕ? Если Эклипс, выкини его на помойку, у него безобразная поддержка Мавена. Используй IDEA.
MN>Под плохой поддержкой вы понимаете то, что там нужно в run configuration залазить и нельзя сразу команду вбить? А как в Идее?
Под плохой поддержкой я понимаю то, что в 2013 году команда Эклипса продолжает делать вид, что Мавен — это всего лишь одна из доп. технологий, тогда как на самом деле, Мавен одна из ключевых технологий в текущей экосистеме Явы.
Re[3]: Класс не подключен, а приложение работает, почему?