Подтвердить что ты не робот

Не может импортировать javax.servlet.annotation.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.
Как я могу решить проблему?

4b9b3361

Ответ 1

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

Сделайте не поместите servlet-api.jar в свой проект. Это только просит неприятностей. Вам нужно проверить раздел "Границы фона" ваших свойств проекта, если фасет динамического веб-модуля установлен на версию 3.0. Вам также необходимо убедиться, что ваш /WEB-INF/web.xml (если есть) был объявлен соответствующим требованиям Servlet 3.0. То есть объявление <web-app> root должно соответствовать следующему:

<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, вам необходимо интегрировать полнофункциональный сервлетконтейнер, такой как Tomcat в Eclipse, а затем ссылаться на него в Targeted Runtimes свойств проекта. Вы можете сделать то же самое для Google App Engine.

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

См. также:


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

Ответ 2

Убедитесь, что номер версии вашего servlet-api.jar не менее 3.0. В файле META-INF/manifest.mf есть номер версии внутри jar:

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 и т.д.) не поддерживают аннотации.

Ответ 3

Если вы используете Maven и не хотите связывать Tomcat в целевых Runtimes в Eclipse, вы можете просто добавить зависимость с областью, указанной в вашем pom.xml:

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

Ответ 4

import javax.servlet.annotation.*;

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

Ответ 5

Перейдите к

window->Preference->server->runtime environment

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

right click project->properties>Targeted Runtimes

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

Ответ 6

Добавьте библиотеку "Runtime сервера" в свой путь сборки Java, и она должна решить проблему.

Ответ 7

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

Ответ 8

Если вы используете IBM RAD, убедитесь, что вы удалите любой j2ee.jar на вкладке "Путь к строительству проектов → ", а затем нажмите "добавить внешнюю банку" и выберите j2ee.jar, поставляемый с RAD.

Ответ 9

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

Ответ 10

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