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项目属性。 然后如图所示,从“运行时”选项卡中检查服务器名称。
在你的依赖中包含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>
这些步骤可以真正帮助您:
-
如果您没有安装任何服务器,则必须执行以下步骤:
菜单窗口 → 首选项 → 扩展服务器 → 运行环境 → 添加 →select一个名称,然后select您已经安装在PC上的Apache服务器path(您也可以按下载并安装)→ 完成 → 确定
参考# 了解更多信息,请点击这里
-
添加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→ Common → lib →servlet-api.jar
。 。 单击确定 ,刷新项目,并运行它…