ChatGPT解决这个技术问题 Extra ChatGPT

在 Java 构建路径中找不到超类“javax.servlet.http.HttpServlet”[重复]

这个问题在这里已经有了答案:How do I import the javax.servlet / jakarta.servlet API in my Eclipse project? (16 个回答) 5 年前关闭。

我有一个由 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 时 - 一切都很好,没有错误。

您需要在构建路径中添加库。 mkyong.com/maven/…
你可能错过了 pom.xml 中的 javax.servlet-api 依赖
确保将其添加为 provided 依赖项,即它未随您的 Web 项目一起提供。
stackoverflow.com/q/4076601/1851302 获得更好的答案

P
Peter Mortensen

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

https://i.stack.imgur.com/U46s9.png


你能详细说明为什么这是有效的吗?目标运行时和丢失的 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 Build Path。
7
7 revs, 3 users 62%

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

Maven javax.servlet javax.servlet-api 3.1.0 提供

Gradle 配置 { 提供 } sourceSets { main { compileClasspath += configurations.provided } } 依赖项 { 提供 'javax.servlet:javax.servlet-api:3.1.0' }


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

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


P
Peter Mortensen

对于 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 服务器。
P
Peter Mortensen

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


P
Peter Mortensen

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

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

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

https://i.stack.imgur.com/9yBnq.png


C
Community

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

如果您没有安装任何服务器,则必须执行以下步骤:菜单窗口→首选项→扩展服务器→运行时环境→添加→选择一个名称,然后选择您已经在您的PC上安装的Apache服务器路径(您可以按下载并安装)→完成→确定

参考号 for more information, click here

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

参考号 This answer


P
Peter Mortensen

只需将这些依赖项添加到您的 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)。
没有第一个就足够了。
P
Peter Mortensen

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

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


P
Peter Mortensen

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

它对我有用。


k
kas

由于没有答案,我猜测除了 Maven 依赖项之外的操作构建有问题。

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

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

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

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


M
Mahder

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


P
Peter Mortensen

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

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

. .单击确定,刷新项目,然后运行它...


为什么它只在 Jboss 上?请删除它!
P
Peter Mortensen

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

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