java - 无法导入 javax.servlet.annotation.WebServlet

标签 java eclipse servlets servlet-3.0

我已经开始编写可以在 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 上使用它。我该如何解决这个问题?

最佳答案

I tried to import the servlet-api.jar to eclipse but still the same also tried to build and clean the project. I don't use tomcat on my eclipse only have it on my net-beans. How can I solve the problem.

不要不要servlet-api.jar在你的项目中。这只是自找麻烦。如果 Dynamic Web Module facet 设置为 3.0 版,您需要检查项目属性的 Project Facets 部分。您还需要确保您的 /WEB-INF/web.xml (如果有的话)被声明符合 Servlet 3.0 规范。 IE。 <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 中集成一个完整的 servletcontainer,比如 Tomcat,然后在项目属性的 Targeted Runtimes 中引用它。您可以对 Google App Engine 执行相同操作.

再一次,不要按照其他人的建议将特定于容器的库复制到 webapp 项目中。它会使您的 webapp 在不同品牌/版本的生产容器上无法执行。你会得到所有颜色的类路径相关的错误/异常。

另见:


与具体问题无关:GAE 确实支持 Servlet 3.0。它的底层 Jetty 7.x 容器仅支持 max Servlet 2.5。

关于java - 无法导入 javax.servlet.annotation.WebServlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595797/

相关文章:

java - 如何正确创建和关闭功能

php - 如何在 Eclipse 中手动指定特定扩展的语法高亮?

java - 使用 PriorityBlockingQueue 时出现 ClassCastException

c# - 在同一台机器上开发 Java、C# 和 .NET

java - 局部变量的值没有被使用?不应该是这样吗?

android - 为什么我们不直接在android中为布局 View 赋值?

java - 如何在eclipse中设置JavaEE First Cup教程?

javascript - 设置静态资源的内容类型

ajax - 在 AJAX 中处理 servlet 输出

java - GWT 应用程序 - 在 Tomcat 或任何其他 servlet 容器上部署