我已经开始编写可以在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在其他品牌/版本的生产容器上无法执行。您将获得所有颜色的与类路径相关的错误/异常。
也可以看看:
与具体问题无关的:GAE 不支持Servlet 3.0。它的底层Jetty 7.x容器仅支持最大Servlet 2.5。