Java Build Path中找不到超类“javax.servlet.http.HttpServlet”

我有一个在Eclipse中由Maven集成创build的项目。 一切正常,但是在所有JSP文件的工作空间中都有这样的:

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 

到第一个地方的string:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

当我创build一个基本的dynamicWeb项目和JSP – 一切正常,没有错误。

首先添加一个运行时间并select项目属性。 然后如图所示,从“运行时”选项卡中检查服务器名称。

从Project Facets中选择运行时,如图中所示

在你的依赖中包含servlet-api-3.1.jar

  • Maven的

     <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 
  • 摇篮

     configurations { provided } sourceSets { main { compileClasspath += configurations.provided } } dependencies { provided 'javax.servlet:javax.servlet-api:3.1.0' } 

项目→ 属性目标运行时Apache Tomcat为我工作。 在Facets下没有Target Runtimes(我在Eclipse v4.2 (Juno)上)。

从你的服务器lib文件夹中包含servlet-api.jar。

在这里输入图像说明

做这一步

在这里输入图像说明

它是什么?

servlet-api JAR文件是一个包含Servlet API规范的接口和类的库。 servlet-api JAR文件仅包含Servlet规范的接口(API),因此您可以使用它来开发Web应用程序。

你在哪里可以得到它?

它在下面的链接中提供:

http://download.oracle.com/otndocs/jcp/servlet-3.0-fr-eval-oth-JSpec/

包含/捆绑的地方

Servlet-api.jar是Java EE下载的一部分,因此您可以开发Web应用程序(如果Java EE不包含它,则无法编译您的FirstServlet类)。

Servlet容器(如Tomcat,JBoss,GlassFish等)也包含servlet-api.jar,否则它们将无法运行您的Web应用程序,此外它们还包含作为Servlet一部分的接口的实现API。

这个名字并不总是一样的,它甚至可能不作为单独的JAR文件存在,Servlet API类可能被捆绑在另一个JAR文件中。

但是,如果您只是想为Servlet容器开发Web应用程序,或者想要创build/编写自己的Servlet API实现,则可以下载单独的包含Servlet API的JAR文件。 看看这里:

http://download.oracle.com/otndocs/jcp/servlet-3.0-fr-eval-oth-JSpec/

可移植性

如果你有Servlet API,你可以编译你的Web应用程序,不pipe它来自哪里。 编译完Web应用程序之后,可以select将其包装到一个WAR文件(WAR = Web ARchive)中,该文件只是一个ZIP文件,其中包含您的静态文件,已编译的Java类和configuration文件(如web.xml )等。能够在任何Servlet容器中运行编译的Web应用程序。

项目→ 属性目标运行时 →Apache Tomcat为我工作。 在Facets下没有Target Runtimes(我在Eclipse v4.4 (Luna)上)。

对于Ant项目

确保你在lib文件夹中有servlet-api.jar。

对于Maven项目:

确保你在POM.xml添加了依赖POM.xml

 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 

另一种方法是 :更新项目方面来select合适的服务器。

在这个位置选中此框:

项目→ 属性目标运行时 →Apache Tomcat(任何服务器)

在服务器运行时中添加Tomcat服务器将执行以下任务:

项目属性目标运行时 →从列表中select您的服务器,“JBoss运行时”→ 完成

在Apache的情况下,你可以selectApache运行时。

在这里输入图像说明

只需将这些依赖关系添加到您的pom.xml文件中:

 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> <scope>provided</scope> </dependency> 

这些步骤可以真正帮助您:

  1. 如果您没有安装任何服务器,则必须执行以下步骤:

    菜单窗口首选项扩展服务器运行环境添加 →select一个名称,然后select您已经安装在PC上的Apache服务器path(您也可以按下载并安装)→ 完成确定

参考# 了解更多信息,请点击这里

  1. 添加Tomcat服务器:

    项目属性Java构buildpath添加库 →从列表中select“服务器运行时”*→ 下一步 →select“Apache Tomcat”→ 完成

参考# 这个答案

在服务器运行时中添加Tomcat服务器将执行以下任务:

项目属性→ Java构buildpath添加库 →从列表中select“服务器运行时”下一步 →select“Apache Tomcat”→ 完成

select项目→ 属性项目构面目标运行时VMware Server

它为我工作。

由于这是没有答案,我猜测除了Maven的依赖关系是错误的操作构build。

在不使用Maven的时候,我从svn重新创build开发环境的时候也遇到同样的问题,我总是忘记为什么,并且不得不弄清楚。 不幸的是,这似乎是Eclipse的一个问题。

我可以通过select一个dynamicweb项目,或只是依赖tomcat的项目,并在构build顺序中移动依赖项,从一次工作项目中删除所有这些错误。 这似乎迫使所有项目正确重build,然后解决所有的错误。

右键单击Web项目,select“构buildpath” – >“configuration构buildpath”。 转到选项卡“订购和导出”,然后select一个库或jar条目,并向上或向下移动它。 我使用了JRE系统库,并将其移至顶端。

点击确定,所有的红色消失!

如果您不使用Maven,只需将javax.servlet-api.jar放在您的项目lib文件夹中即可。

如果没有任何理由,可以从命令行构build它:

 ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 clean ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 compile ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 dist 

在JBoss的情况下…右键单击项目→ 构buildJavapath →添加外部JAR文件。

然后浏览到jboss-folder→ Commonlib →servlet-api.jar

。 。 单击确定 ,刷新项目,并运行它…