如何在我的 Eclipse 项目中导入 javax.servlet / jakarta.servlet API?确保您拥有正确的 Eclipse 和 Server 版本确保您使用的是正确的 Servlet 软件包在 Eclipse 中集成服务器并将其与项目关联切勿随身携带松散的特定于服务器的 JAR 文件

2022-08-31 04:52:40

我想在Eclipse中使用Servlets进行开发,但它说包/无法解析。如何将/打包添加到我的 Eclipse 项目中?javax.servletjakarta.servletjavax.servletjakarta.servlet


答案 1

确保您拥有正确的 Eclipse 和 Server 版本

确保至少使用 Eclipse IDE for Enterprise Java Developer(与 Enterprise 一起使用)。它包含用于创建动态Web项目并轻松集成servletcontainers的开发工具(这些工具是Web Tools Platform,WTP的一部分)。如果您已经拥有Eclipse IDE for Java(没有企业版),并手动安装了一些相关的插件,那么很可能它没有正确完成。你最好把它扔掉,抓住真正的Eclipse IDE for Enterprise Java。

您还需要确保在您的机器上已经安装了一个 servletcontainer,该容器至少实现了与生产环境中的 servlet 容器相同的 Servlet API 版本,例如 Apache TomcatOracle GlassFishJBoss AS/WildFly 等。通常,只需下载ZIP文件并提取即可。对于Tomcat,请不要下载EXE格式,这仅适用于基于Windows的生产环境。另请参阅 a.o. 本地主机上的 Tomcat 服务器所需的多个端口(8005、8080、8009)已在使用中

Servletcontainer 是 Servlet API 的具体实现。请注意,Oracle.com Java EE SDK 下载基本上包含 GlassFish。因此,如果您碰巧已经下载了Java EE SDK,那么您基本上已经拥有GlassFish。另请注意,例如 GlassFish 和 JBoss AS/WildFly 不仅仅是一个 servletcontainer,它们还支持 JSF、EJB、JPA 和所有其他 Java EE 的幻想。另请参阅 a.o. 究竟什么是 Java EE?

确保您使用的是正确的 Servlet 软件包

自Servlet API版本5.0以来,该软件包已重命名为软件包,该版本是Jakarta EE 9(Tomcat 10,TomEE 9,WildFly 22 Preview,GlassFish 6,Payara 6,Liberty 22等)的一部分。因此,如果您的目标是这些服务器版本或更新的版本,则需要替换javax.*jakarta.*

import javax.servlet.*;
import javax.servlet.http.*;

import jakarta.servlet.*;
import jakarta.servlet.http.*;

为了让它编译,否则你可能会面临这个构建错误的风险

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

在 Eclipse 中集成服务器并将其与项目关联

在计算机上安装 Eclipse for Enterprise Java 和 servletcontainer 后,请在 Eclipse 中执行以下步骤:

  1. 在 Eclipse 中集成 servletcontainer

    a. 通过服务器视图

    • 打开底部框中的“服务器”视图。

    • 右键单击该位置,然后选择“新建>服务器”。

    • 选择适当的 servlet 容器品牌和版本,然后逐步完成向导。

      enter image description here

    b. 或者,通过 Eclipse 首选项

    • 打开“窗口>首选项>服务器>运行时环境”。

    • 您可以在此处添加编辑删除服务器。

      enter image description here

  2. 将服务器与项目关联

    a. 在新项目中

    • 打开左侧的项目导航器/资源管理器

    • 右键单击该位置并选择“新建>项目”,然后在菜单中选择“Web >动态 Web 项目”。

    • 在向导中,将“目标运行时”设置为集成服务器。

      enter image description here

    b. 或者,在现有项目中

    • 右键单击项目,然后选择“属性”。

    • “目标运行时”部分中,选择集成服务器。

      enter image description here

    无论哪种方式,Eclipse 都会在构建路径中自动获取 servletcontainer 的库。通过这种方式,您将能够导入和使用 Servlet API。

切勿随身携带松散的特定于服务器的 JAR 文件

在任何情况下,您都不需要在项目的“生成路径”属性中摆弄。最重要的是,您永远不应该手动复制/下载/移动/包含特定于 servletcontainer 的库,如 、 、 、 、 等。它只会导致未来的可移植性,兼容性,类路径和可维护性问题,因为当您的web应用程序部署到与最初从中获取这些库的品牌/版本不同的servlet容器时,它将不起作用。servlet-api.jarjsp-api.jarel-api.jarj2ee.jarjavaee.jar

如果您使用的是 Maven,则需要绝对确保目标运行时已经提供的特定于 servlet 容器的库被标记为 .你可以在这个答案中找到Tomcat 10+,Tomcat 9-,JEE 9+和JEE 8-的正确依赖声明示例:Tomcat 9将servlets转换为javax.servlet.Servlet而不是jakarta.servlet.http.HttpServlet<scope>provided</scope>pom.xml

以下是一些典型的例外,当您在不小心尝试修复编译错误时,可以使用特定于servlet容器的库或甚至,等来放置这些异常:/WEB-INF/lib/JRE/lib/JRE/lib/ext


答案 2

import javax.servlet

步骤1

转到项目的属性(使用 + 或单击 )AltEnter

步骤2

目标运行时下检查Apache Tomcat v7.0,它的工作原理。


推荐