не удается импортировать javax.сервлет.аннотация.WebServlet;

Я начал писать приложение, которое может работать на Google App Engine.
Но когда я хотел использовать свой код из Netbeans для Eclipse, у меня были ошибки:

 import javax.servlet.annotation.WebServlet;

и

 @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})

ошибки:

The import javax.servlet.annotation cannot be resolved
WebServlet cannot be resolved to a type

Я попытался импортировать сервлет-api.jar для Eclipse, но все тот же, также попытался построить и очистить проект.
Я не использую Tomcat на своем Eclipse, только на моих Netbeans.
Как я могу решить эту проблему?

10 ответов


Я попытался импортировать сервлет-api.jar для eclipse, но все же то же самое также пыталось построить и очистить проект. Я не использую tomcat на моем eclipse, только на моих сетевых бобах. Как я могу решить проблему.

Do не поставить servlet-api.jar в вашем проекте. Это только напрашивается на неприятности. Вам нужно проверить в Аспекты Проекта раздел свойств вашего проекта, если Динамические Web-Модуль грань устанавливается на версию 3.0. Вы также должны убедиться, что ваш /WEB-INF/web.xml (Если есть) объявлено conform Servlet 3.0 spec. Т. е. the <web-app> корневая декларация должна соответствовать следующему:

<web-app
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

для того чтобы иметь возможность импортировать javax.servlet материал, вам нужно интегрировать fullworthy servletcontainer как Tomcat в Eclipse, а затем ссылаться на него в Целевые Среды Выполнения свойства проекта. Вы можете сделать то же самое для Приложение Google Двигатель.

еще раз делать не скопируйте библиотеки, специфичные для контейнеров, в проект webapp, как предлагают другие. Это сделало бы ваш webapp unexecutabele на производственных контейнерах другой марки / версии. Вы получите ошибки/исключения, связанные с classpath, во всех цветах.

Читайте также:


связаны к конкретному вопросу: GAE делает не поддержка сервлетов 3.0. Его основной причал 7.X контейнер поддерживает только Max Servlet 2.5.


проверьте, что номер версии servlet-api.jar по крайней мере 3.0. Существует номер версии внутри банки в :

Implementation-Version: 3.0.1

Если это меньше, чем 3.0, загрузите 3.0.1 из Maven Central: http://search.maven.org/#artifactdetails/javax.servlet/javax.servlet-api/3.0.1/jar

бывшие спецификации сервлета (2.5, 2.4 etc .) не поддерживает аннотации.


Если вы используете Maven и не хотите связывать Tomcat в Целевые Сред в Eclipse, вы можете просто добавить зависимость в области предоставил В пом.XML-код:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

У меня была та же проблема, оказывается, у меня был мой проект настроен, как многие из вас заявили выше, но проблема сохранялась, поэтому я пошел глубже и наткнулся на то, что я использовал Apache Tomcat 6 в качестве сервера выполнения, поэтому исправление было простым, я просто обновил проект для использования Apache Tomcat 7 и все, наконец, IDE распознал javax.сервлет.аннотация.WebServlet Примечание.


import javax.servlet.annotation.*;

(никто не написал этого, но нужно импорт это как WebInitparam не распознается другими пакетами)


на

window->Preference->server->runtime environment

затем выберите сервер tomcat. Если ошибка все еще существует, то

right click project->properties>Targeted Runtimes

затем проверьте сервер


добавьте библиотеку "Server Runtime" в путь сборки java, и это решит проблему.


Если вы используете IBM RAD, то убедитесь, что удалить любой j2ee.jar в ваших проектах build path -> libraries tab, а затем нажмите "Добавить внешний jar" и выберите j2ee.банка, которая поставляется с RAD.


У меня была такая же проблема с использованием Spring, решена путем добавления Tomcat Server Runtime для построения пути.


вам нужно добавить свой сервлет-api.Jar в путь сборки проекта. Посмотрите здесь для того, чтобы сделать это.