无法导入javax.servlet.annotation.WebServlet;

Vit*_*sky 34 java eclipse servlets servlet-3.0

我已经开始编写可以在Google App Engine上运行的应用程序了.
但是当我想将我的Netbeans代码用于Eclipse时,我遇到了错误:

 import javax.servlet.annotation.WebServlet;
Run Code Online (Sandbox Code Playgroud)

 @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})
Run Code Online (Sandbox Code Playgroud)

错误是:

The import javax.servlet.annotation cannot be resolved
WebServlet cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

我试图将servlet-api.jar导入Eclipse,但仍然是相同的,也尝试构建和清理项目.
我不在我的Eclipse上使用Tomcat只在我的Netbeans上使用它.
我该如何解决这个问题?

Bal*_*usC 57

我试图将servlet-api.jar导入到eclipse中,但仍然尝试构建和清理项目.我不会在我的eclipse上使用tomcat只在我的网上使用它.我该如何解决这个问题.

千万不能servlet-api.jar你的项目.这只是在寻找麻烦.如果动态Web模块构面设置为3.0版,则需要检查项目属性的Project Facets部分.您还需要确保您的(如果有)已声明符合Servlet 3.0规范.即根声明必须符合以下内容:/WEB-INF/web.xml<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">
Run Code Online (Sandbox Code Playgroud)

为了能够导入javax.servlet内容,您需要在Eclipse中集成一个像Tomcat这样的完整servlet容器,然后在项目属性的Targeted Runtimes中引用它.您可以为Google App Engine执行相同的操作.

再次,不要像其他人建议的那样将特定于容器的库复制到webapp项目中.它会使您的webapp在不同品牌/版本的生产容器上无法切割.您将获得所有颜色的类路径相关错误/异常.

也可以看看:


无关的具体问题:GAE并没有支持Servlet 3.0.它的底层Jetty 7.x容器仅支持max Servlet 2.5.


pal*_*int 16

检查您的版本号servlet-api.jar是否至少为3.0.META-INF/manifest.mf文件中jar内有一个版本号:

Implementation-Version: 3.0.1
Run Code Online (Sandbox Code Playgroud)

如果小于3.0,请从Maven Central下载3.0.1:http://search.maven.org/#artifactdetails | javax.servlet | javax.servlet -api | 3.0.1 | jar

以前的servlet规范(2.5,2.4等)不支持注释.


laz*_*lev 11

如果您正在使用Maven并且不想在Eclipse 中的Targeted Runtimes中链接Tomcat,则可以使用pom.xml中提供的范围简单地添加依赖项:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Kha*_*ino 5

window->Preference->server->runtime environment
Run Code Online (Sandbox Code Playgroud)

然后选择你的tomcat服务器。如果错误仍然存​​在,那么

right click project->properties>Targeted Runtimes
Run Code Online (Sandbox Code Playgroud)

然后检查服务器