在Java Build Path中找不到超类"javax.servlet.http.HttpServlet"

dis*_*992 408 java eclipse jsp maven web

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

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
Run Code Online (Sandbox Code Playgroud)

到第一个字符串所在的位置:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
Run Code Online (Sandbox Code Playgroud)

当我创建一个基本的动态Web项目和JSP时 - 一切都很好,没有错误.

Aji*_*han 631

首先添加运行时并选择项目属性.然后从"运行时"选项卡中检查服务器名称,如图所示.

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

  • 此错误表示项目类路径中没有http-servlet,一旦我们将target-runtime添加到项目中,http-servlet将在项目类路径中可用. (26认同)
  • 你能详细说明为什么这有效吗?如何连接目标运行时和缺少的http-servlet?我对窗帘背后发生的事情非常感兴趣. (9认同)
  • 我在Eclipse Mars中的Runtimes中没有Tomcat选项,在Window> Preferences> Server> Runtime Environments> Add> Apache Tomcat>选择de installation directory> Install中解决了这个问题. (5认同)

小智 237

包含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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 摇篮

    configurations {
        provided
    }
    sourceSets {
        main { compileClasspath += configurations.provided }
    }
    dependencies {
        provided 'javax.servlet:javax.servlet-api:3.1.0'
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 一个更好的答案是`在你的依赖项中包含servlet-api-xyjar.我虽然3.0是最新的. (9认同)
  • 要使用的Servlet API版本由容器确定.所以你需要知道哪个是traget系统.为避免类路径问题,请不要使用我们的工件发送servlet api,从而在pom中标记"提供"的依赖项. (5认同)
  • 只有Eclipse版本,Kepler - 错误,Juno - 确定. (2认同)

小智 104

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


Sir*_*dda 50

对于Ant项目:

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

对于Maven项目:

确保您已添加依赖项POM.xml.

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

另一种方法是:更新项目构面以获取正确的服务器.

选中此位置的此框:

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


小智 29

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


Var*_*run 20

在服务器运行时添加Tomcat服务器将完成这项工作:

项目属性目标运行时 →从列表中选择您的服务器,"JBoss Runtime"→Finish

如果是Apache,您可以选择Apache Runtime.

在此输入图像描述


Chr*_*Sim 18

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

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

    菜单窗口首选项扩展服务器运行时环境添加 →选择一个名称,然后选择已安装在PC上的Apache服务器路径(您也可以按下载并安装)Finish→→OK

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

  1. 添加Tomcat服务器:

    项目属性Java构建路径添加库 →从列表中选择"服务器运行时"→→ 下一步 →选择"Apache Tomcat"→Finish

参考#这个答案


A. *_*ssi 14

只需将这些依赖项添加到您的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>
Run Code Online (Sandbox Code Playgroud)


ada*_*gde 8

在服务器运行时添加Tomcat服务器将完成这项工作:

项目属性→ Java构建路径添加库 → 从列表中选择"服务器运行时"下一步 →选择"Apache Tomcat"→ 完成.


Ana*_*hak 5

选择项目→ 属性项目构面目标运行时VMware服务器.

它对我有用.


kas*_*kas 5

由于这个问题没有得到解答,我猜测除了 Maven 依赖项之外,操作构建中还有其他问题。

虽然不使用 Maven,但从 svn 重新创建开发环境时,我时不时会遇到同样的问题,而且我总是忘记为什么,必须弄清楚。不幸的是,这似乎是 Eclipse 的问题。

我可以通过仅选择一个动态 Web 项目或仅选择 tomcat 依赖项来从曾经工作的项目中删除所有此类错误,并在构建顺序中移动依赖项。这似乎迫使所有项目正确重建,然后所有错误都得到解决。

右键单击Web项目,选择“构建路径”->“配置构建路径”。转到“订购和导出”选项卡,然后选择一个库或 jar 条目并将其向上或向下移动。我使用了 JRE 系统库并将其移至顶部。

单击“确定”,所有红色都会消失!