У меня возникла та же проблема и, наконец, она заработала после просмотра этого среди других страниц.Я собираюсь перечислить это здесь в случае, если другие люди столкнутся с той же самой проблемой.
В моем случае, проект myeclipse был создан из файла .pom maven, который перечисляет файлы JEE 1.5 как «предоставленную» область, т.е.эти файлы будут предоставлены контейнером (в моем случае tomcat 6).Так что, если я создаю файл war, используя maven, и помещаю его в директорию webapps, он просто отлично работает.Делать это каждый раз, когда вы вносите изменения, становится немного утомительно, поэтому я решил пойти на развернутое развертывание, и вот тогда я столкнулся с той же проблемой.
Поскольку файл проекта был создан из файла pom, этипоявились зависимости, но файл проекта Eclipse не распознает их как «предоставленные» и не подлежащие развертыванию.И TOMCAT недоволен, когда находит две реализации спецификации:
"Спецификация сервлета 2.3 с 9.7.2 рекомендует ... Загрузчик классов, который контейнер использует для загрузки сервлета в WAR, должен позволять разработчику загружать любыересурсы, содержащиеся в библиотеках JAR внутри WAR, следуя обычной семантике J2SE с использованием getResource. Он не должен позволять WAR переопределять классы API J2SE или сервлетов Java. Кроме того, рекомендуется, чтобы загрузчик не разрешал сервлетам в WAR доступ к классам реализации веб-контейнера.Также рекомендуется, чтобы загрузчик классов приложений был реализован таким образом, чтобы классы и ресурсы, упакованные в WAR, загружались в предпочтении по сравнению с классами и ресурсами, находящимися в JAR-файлах библиотеки всего контейнера. "
Я поиграл с вышеуказанным решениемизменить конфигурацию сборки Deplyment, но это не полезно в одиночку, поскольку эти jar-файлы включаются, если я выбираю «JARS из пути сборки» в свойствах проекта меню / MyEclipse / Web / Deplyment / Configure wНастройки orkspace.И мне нужно сделать это, потому что у меня есть другие jar-файлы зависимостей (не предоставляются контейнером).
Решение:
- Я удалил эти jar-файлы из зависимостей в пути сборки.
- Вместо этого я добавил зависимость от пользовательской библиотеки - JAVA EE5.
- И в конфигурации развертывания я удалил опцию JARS, экспортированную из пользовательских библиотек необходимых проектов.
YMMV.Но в любом случае, если вы прочитаете приведенное выше определение спецификации сервлета, а затем посмотрите на конфигурацию в своем рабочем пространстве, вы можете разобраться с этим.
Надеюсь, это поможет.