GetDispatcherType() - undefined для типа HttpServletRequest
Я импортировал динамический веб-проект Java в Eclipse IDE (который был реализован в Eclipse IDE и правильно работал).
Я получаю сообщение < getDispatcherType()
undefined для типа HttpServletRequest
"при запуске проекта.
Я скопировал каждый файл в IDE в соответствии со структурой и выполнил работу.
Теперь я просто хочу знать, почему я получаю эту ошибку, когда импортировал проект. Кто-нибудь сталкивался с той же проблемой? Пожалуйста, дайте мне знать, какую ошибку я мог бы сделать.
Ответы
Ответ 1
У меня была такая же проблема, когда у меня была противоречивая версия сервлета-api, которую я использовал в IntelliJ, которая противоречила тому, что поддерживалось в Tomcat 8.0.x... Я использовал Maven, поэтому я просто изменил свою зависимость к этому, затем выполнил чистое развертывание моего webapp, и проблема исчезла.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
Ответ 2
tomcat 8.0.18, maven. Это о конфликте. Мое решение:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
изменено на:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
Ответ 3
Вы должны исключить "servlet-api-2.5.jar" из любой другой зависимости, которую вы можете иметь в своем pom.xml.
Попытайтесь не добавлять другой сервлет-api как компиляцию, так как ваш tomcat уже предоставляет его вам.
Мои шаги:
Я проверил, что в моей папке WEB-INF/lib был включен servlet-api-2.5.jar, поэтому я проверил полный график зависимостей на "Maven projects @IntelliJ Idea", затем я исключил эту зависимость от ВСЕХ мест, откуда она исходит. [Кнопка "Показать зависимости" подходит для этого]
Мне пришлось исключить "commons-logging" (так как он имеет зависимость от сервлета-api 2.5) от инструментов скорости.
Также пришлось исключить servlet-api из jaxws- spring, который имеет прямую зависимость от области по умолчанию.
Затем просто добавьте область, предоставленную так, как вы должны, в свою зависимость javax.servlet-api.
Если вы добавите свой сервлет-api 3.0.1+ в качестве "компиляции", вы можете в конечном итоге с обоими, и первый, чтобы загрузить, победит, что совсем не хорошо.
Примечание:
Я предполагаю, что эта проблема исходит из переименования groupId/artifactId из servlet-api и не переопределяется самой старой версией, включенной в проект maven.:\
Ответ 4
Я решил эту проблему, используя servlet-api.jar и jsp-api.jar из самого tomcat, поэтому зависимость будет указана с системной областью, как показано ниже:
<servlet.api.jar.path>/opt/apache-tomcat-8.0.15/lib/servlet-api.jar</servlet.api.jar.path>
<jsp.api.jar.path>/opt/apache-tomcat-8.0.15/lib/jsp-api.jar</jsp.api.jar.path>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>system</scope>
<systemPath>${servlet.api.jar.path}</systemPath>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>system</scope>
<systemPath>${jsp.api.jar.path}</systemPath>
</dependency>
Ответ 5
Если ваш tomcat имеет версию 8, используйте:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
работает!
Ответ 6
Это также может произойти при обновлении от старой версии до версии Tomcat и хранении старых файлов jar, таких как j2ee.jar и javaee.jar.
j2ee.jar следует включить nerver в ваш webapp, interfae реализуется tomcat