понедельник, 21 февраля 2011 г.

Небольшой конфликт между gwt-dev-2.2.0.jar и servlet api 3.0

Столкнулся неожиданно с проблеммой, когда наличие всех нужных библиотек, классов и методов не давало собрать проект.
Ошибка была связана с работой третьей редакции сервлетов.
А конкретно - в коде никак не хотели вызываться методы javax.servlet.http.HttpServletRequest.startAsync() и javax.servlet.http.HttpServletRequest.startAsync( javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res).
Постоянно eclipse ругался, что нет такого метода.
При этом глаза не обманывали - есть такой метод в подгруженной библиотечке.

"Ручная" компиляция в консоли единстенно нужного класса с указанием библиотеки сервлетов третьей редакции проходила успешно.

Оказалось: библиотека gwt-dev-2.2.0 содержит Servlet API 2.4, и если в списке загружаемых библиотек она стоит выше (раньше) библиотеки нужных сервлетов, то та уже и не подгружается, видимо.
Решение проблеммы простое: поднять библиотеку третьих сервлетов раньше библиотеки gwt.
Актуально и для Intellij Idea, и для eclipse.

Спасибо ulizko.com

1 комментарий:

  1. Да,и я столкнулся с подобной проблемой - хотел реализовать закачку фалйла с помощью servlet 3.0.B IDE ругался на request.getPart("file"),будто нет такого метода.Уже и нужную библиотеку подключил и вижу ж что есть в ней этот метод.Сначала в нете наткнулся на зарубежный сайт,где прогер констатировал факт ,что gwt не поддерживают третюю версию сервлетов и решил решить задачу другим способом,а тут натыкаюсь на Ваше сообщение,поменял местами порядок библиотек и действительно заработало.А сейчса припоминаю,что когда-то учился и это проходил.Ну ничего - будет наука))

    ОтветитьУдалить