我已经开始编写可以在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导入到eclipse中,但仍然尝试构建和清理项目。我不会在我的eclipse上使用tomcat,只能在我的网上使用它。我该如何解决这个问题。
不要把servlet-api.jar
放在你的项目中。这只是在寻找麻烦。如果动态Web模块构面设置为3.0版,则需要检查项目属性的Project Facets部分。您还需要确保您的/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这样的完整的servlet容器,然后在项目属性的Targeted Runtimes中引用它。你可以为Google App Engine做同样的事情。
再次,不要像其他人建议的那样将特定于容器的库复制到webapp项目中。它会使您的webapp在不同品牌/版本的生产容器上无法切割。您将获得所有颜色的类路径相关错误/异常。
与具体问题无关:GAE不支持Servlet 3.0。它的底层Jetty 7.x容器仅支持max Servlet 2.5。
只需将以下内容添加到您的maven项目pom.xml文件中:
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
您需要将servlet-api.jar添加到项目的构建路径中。看看here如何做到这一点。
检查servlet-api.jar
的版本号是否至少为3.0。 META-INF/manifest.mf
文件中jar内有一个版本号:
Implementation-Version: 3.0.1
如果小于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等)不支持注释。
如果您正在使用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>
去
window->Preference->server->runtime environment
然后选择你的tomcat服务器。如果错误仍然存在,那么
right click project->properties>Targeted Runtimes
然后检查服务器
我遇到了同样的问题,我转而认为我的项目配置与上述许多人一样,但问题仍然存在,所以我更深入地发现我使用Apache Tomcat 6作为我的运行时服务器,所以修复很简单,我刚刚将项目升级为使用Apache Tomcat 7,而且最后IDE终止了javax.servlet.annotation.WebServlet注释。
import javax.servlet.annotation.*;
(没有人写过这个,但需要导入这个,因为其他包不能识别WebInitparam)
将库'Server Runtime'添加到您的java构建路径,它将解决该问题。
如果您使用的是IBM RAD,请确保删除项目构建路径中的任何j2ee.jar - > libraries选项卡,然后单击“add external jar”并选择RAD附带的j2ee.jar。
我使用Spring遇到了同样的问题,通过添加Tomcat Server Runtime来构建路径解决了这个问题。