【问题标题】:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path [duplicate]在 Java 构建路径中找不到超类“javax.servlet.http.HttpServlet”[重复]
【发布时间】:2014-05-10 11:19:48
【问题描述】:

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

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

到第一个字符串所在的地方:

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

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

【问题讨论】:

标签: java eclipse jsp maven web


【解决方案1】:

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

【讨论】:

  • 你能详细说明为什么这是有效的吗?目标运行时和丢失的 http-servlet 是如何连接的?我会对窗帘后面发生的事情非常感兴趣。
  • 这个错误表明项目类路径中没有http-servlet,一旦我们将target-runtime添加到项目中,项目类路径中就会有http-servlet。
  • 我在 Eclipse Mars 的运行时中没有 Tomcat 选项,在 Window > Preferences > Server > Runtime Environments > Add > Apache Tomcat > 选择 de 安装目录 > Install 解决了这个问题
  • 这已经过时了。在大多数情况下,您使用 maven tomcat6 或 7 插件。
  • 在没有使用 Maven 的项目中,您可以通过在 Eclipse Project Explorer -> Properties -> Java Build Path 中右键单击您的项目名称来清除此错误,并检查 Apache Tomcat server 以将其添加到您的 Java构建路径。
【解决方案2】:

在您的依赖项中包含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>
    
  • Gradle

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

【讨论】:

  • 一个更好的答案是 Include servlet-api-x.y.jar in your dependencies. 我虽然 3.0 是最新的。
  • 错误消失了,但在另一台电脑上我不需要这样做。
  • 这台电脑有什么不同?
  • 仅限 Eclipse 版本,Kepler - 错误,Juno - ok。
  • 要使用的 Servlet API 版本由容器决定。所以你需要知道哪个是traget系统。为避免类路径问题,请勿将 servlet api 与我们的工件一起发送,因此在您的 pom 中将依赖标记为“提供”。
【解决方案3】:

Project → PropertiesTarget RuntimesApache Tomcat 为我工作。 Facets 下没有目标运行时(我在 Eclipse v4.2 (Juno))。

【讨论】:

    【解决方案4】:

    对于 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>
    

    另一种方法是:更新项目方面以选择正确的服务器。

    在此位置选中此框:

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

    【讨论】:

    • 第二个建议对我有用。项目已创建,但未在“目标运行时”中检查 Tomcat 服务器。
    【解决方案5】:

    Project → PropertiesTarget Runtimes → *Apache Tomcat 为我工作。 Facets 下没有目标运行时(我在 Eclipse v4.4 (Luna))。

    【讨论】:

      【解决方案6】:

      在服务器运行时添加 Tomcat 服务器即可:

      Project PropertiesTarget Runtimes → 从列表中选择您的服务器,“JBoss Runtime” → Finish

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

      【讨论】:

        【解决方案7】:

        这些步骤真的可以帮助你:

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

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

        参考号for more information, click here

        1. 添加 Tomcat 服务器:

          项目属性Java Build Path添加库 → 从列表中选择“Server Runtime”* → 下一步 em> → 选择“Apache Tomcat” → 完成

        参考号This answer

        【讨论】:

          【解决方案8】:

          只需将这些依赖项添加到您的 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>
          

          【讨论】:

          • 为什么我们需要第二个依赖?请删除第二个! (jsp-api)。
          • 没有第一个就够了。
          【解决方案9】:

          在服务器运行时添加 Tomcat 服务器就可以了:

          项目属性 → Java 构建路径添加库从列表中选择“Server Runtime”下一步 → 选择“Apache Tomcat” → 完成

          【讨论】:

            【解决方案10】:

            选择项目 → PropertiesProject FacetsTarget RuntimesVMware Server

            它对我有用。

            【讨论】:

              【解决方案11】:

              由于这个问题没有答案,我猜测除了 Maven 依赖项之外的其他问题与 ops 构建有关。

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

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

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

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

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  如果是 JBoss... 右键单击​​项目 → 构建 Java 路径 → 添加外部 JAR 文件。

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

                  。 . 点击OK,刷新项目,运行...

                  【讨论】:

                  • 为什么它只在 Jboss 上?请删除它!
                  【解决方案14】:

                  如果由于某种原因没有任何效果,请从命令行构建它:

                  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
                  

                  【讨论】:

                    猜你喜欢
                    • 2015-01-12
                    • 2021-05-12
                    • 2021-06-12
                    • 2016-12-23
                    • 2015-12-24
                    • 1970-01-01
                    • 2011-08-29
                    相关资源
                    最近更新 更多