我已经开始编写可以在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
我尝试将servlet-api.jar导入Eclipse,但仍然相同,还尝试构建和清理项目。我不在Eclipse上使用Tomcat,而仅在Netbeans上使用它。我该如何解决这个问题?

最佳答案


不要而不是servlet-api.jar放入您的项目中。这只是自找麻烦。如果Dynamic Web Module构面设置为3.0版,则需要在项目属性的“Project Facets”部分中 checkin 。您还需要确保已声明/WEB-INF/web.xml(如果有)符合Servlet 3.0规范。即<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,您需要在Eclipse中集成像Tomcat这样的完全有值(value)的servlet容器,然后在项目属性的Targeted Runtimes中引用它。您可以对Google App Engine执行相同的操作。
再一次,而不是像其他人建议的那样将容器特定的库复制到webapp项目中。这将使您的webapp在其他品牌/版本的生产容器上无法执行。您将获得所有颜色的与类路径相关的错误/异常。
也可以看看:
  • How do I import the javax.servlet API in my Eclipse project?

  • 与具体问题无关的:GAE 不支持Servlet 3.0。它的底层Jetty 7.x容器仅支持最大Servlet 2.5。

    07-27 18:52
    查看更多