如何导入javax。Servlet / jakarta。servlet API在我的Eclipse项目?

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

719162 次浏览

维基百科

import java.io.IOException;
import java.io.PrintWriter;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<html>\n" +
"<head><title>Hello WWW</title></head>\n" +
"<body>\n" +
"<h1>Hello WWW</h1>\n" +
"</body></html>");
}
}

当然,这只有在您将servlet-api.jar添加到Eclipse构建路径时才有效。通常你的应用服务器(例如Tomcat)会有正确的jar文件。

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

确保你至少在使用Eclipse IDE适用于<强>企业 Java(和Web)开发人员(和企业一起)。它包含了用于创建动态web项目和轻松集成servlet容器的开发工具(这些工具是web工具平台WTP的一部分)。如果您已经有了用于Java的Eclipse IDE(没有Enterprise),并手动安装了一些相关的插件,那么很可能没有正确地完成。您最好丢弃它,并为Enterprise Java one使用真正的Eclipse IDE。

您还需要确保您的机器上已经安装了一个Servlet容器,它实现的Servlet API版本至少与生产环境中的Servlet容器相同,例如Apache TomcatRedHat WildFlyEclipse GlassFish等。通常,只需下载ZIP文件并提取它就足够了。对于Tomcat,执行下载EXE格式,这仅适用于基于Windows的生产环境。参见a.o. Tomcat服务器在本地主机上所需的几个端口(8005、8080、8009)已被使用

Servlet容器是Servlet API的具体实现。还要注意,例如WildFly和GlassFish是更多的而不仅仅是一个servlet容器,它们还支持JSF (Faces)、EJB (Enterprise Beans)、JPA (Persistence)和所有其他Jakarta EE的功能。另见a.o. Java EE到底是什么?

确保使用了正确的Servlet包

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

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

通过

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

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

超类“javax.servlet.http.HttpServlet"在Java构建路径中没有找到

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

在您的机器上安装了Eclipse for Enterprise Java和servlet容器之后,在Eclipse中执行以下步骤:

  1. < p > 在Eclipse中集成servlet容器

    一。Via Servers视图

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

    • 右键单击那里并选择新比;服务器

    • 选择合适的servletcontainer make和版本,然后浏览向导。

      enter image description here

    b。或者,通过Eclipse首选项

    • < p > 窗口在偏好比;服务器比;运行时环境开放。

    • 你可以在这里添加编辑删除服务器。

      enter image description here

  2. < p > 将服务器与项目关联起来

    一。新项目中

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

    • 右键单击那里,选择新比;项目,然后在菜单网络比;动态Web项目

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

      enter image description here

    b。或者,在现有的项目中

    • 右键单击项目并选择属性

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

      enter image description here

    无论采用哪种方式,Eclipse都将自动在构建路径中获取servlet容器的库。这样您就可以导入和使用Servlet API了。

永远不要携带松散的特定于服务器的JAR文件

在任何情况下,你都不需要在项目的构建路径属性中瞎折腾。首先,你应该手动复制/下载/移动/包含各个特定于servletcontainer的库,如servlet-api.jarjsp-api.jarel-api.jarj2ee.jarjavaee.jar等。这只会导致未来的可移植性、兼容性、类路径和可维护性问题,因为当你的webapp部署到一个不同于最初获取这些库的制造/版本的servlet容器中时,它将无法工作。

如果你正在使用Maven,你需要绝对确保目标运行时已经提供的特定于servletcontainer的库被标记为<scope>provided</scope>。你可以在这个答案中找到针对Tomcat 10+、Tomcat 9-、JEE 9+和JEE 8-的正确pom.xml依赖声明的例子:如何正确配置雅加达EE库在Maven pom.xml为Tomcat?

以下是一些典型的异常,当你粗心地试图修复编译错误时,你会在/WEB-INF/lib甚至/JRE/lib/JRE/lib/ext等中使用特定于servletcontainer的库:

import javax.servlet

步骤1

转到项目的属性(使用Alt+输入或右键单击)

步骤2

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

快速修复-这在Eclipse中工作-右键单击项目->属性-> Java构建路径(选项卡)->添加外部jar ->定位servlet api jar实现(如果Tomcat -其命名为servlet-api.jar) ->单击确定。就是这样!!

和Hari有一点不同:

右键单击项目——>属性——> Java构建路径——>添加库…——>服务器运行时——> Apache Tomcat ---->完成。

我在与“动态Web模块”相关的项目创建过程中得到了一个空指针异常。

为了编译项目(即javax.servlet以成功导入),我必须进入项目的属性,在侧栏中选择项目方面,勾选动态Web模块并单击应用

令人惊讶的是,这一次“动态Web模块”facet安装正确,导入开始工作。

你可以简单地复制servlet-api.jar并将jar文件复制到WEB-INF中的lib文件夹中。 然后只要清理并构建你的项目,你的错误就会得到解决

  **OR**

您可以通过以下步骤直接将jar文件添加到库中。

  1. 右键单击项目。
  2. 转到属性。
  3. 进入Java构建路径。
  4. 从选项卡中选择添加库选项。
  5. 添加Jar文件
  6. 给出你的servlet-api.jar文件的路径。
  7. 清理并构建项目。

最重要的是,不要手动复制/下载/移动/包含特定于servletcontainer的单个库,比如servlet-api.jar

@BalusC,

我更愿意使用我的应用程序将要使用的确切类,而不是Eclipse提供的类(当我感觉自己像一个偏执的开发人员时)。

另一个解决方案是使用Eclipse“配置构建路径”>库>添加外部jar,并添加任何容器的servlet api。

当使用ant构建时,遵循@kaustav datta的解决方案-具有类似tomcat的属性。Home或weblogic.home。 然而,它引入了另一个约束,如果使用Weblogic,开发人员必须在他/她的本地机器上安装Weblogic ! 还有其他更清洁的解决方案吗?< / p >

包括服务器lib文件夹中的servlet-api.jar。enter image description here

执行这一步

enter image description here

在我的例子中,当我转到目标运行时,屏幕时,Tomcat 7没有被列出(禁用),尽管已经安装。

为了解决这个问题,我不得不去首选项- >服务器- >运行时环境,然后卸载并重新安装Tomcat 7。

添加javax。xml中的Servlet依赖项。你的问题会解决的。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
我知道这是一个老帖子。然而,我观察到另一个实例,在该项目中已经添加了Tomcat,但我们仍然得到这个错误。这样做是为了解决:
Alt + 输入 < br >项目方面
在右边,在详细信息旁边,是另一个选项卡“运行时间”。 已安装的tomcat服务器将列在那里。选择它。
保存配置并完成!< / p >

希望这能帮助到一些人。

我们中的许多人通过Maven项目在Eclipse中开发。如果是这样, 你可以通过tomcat-servlet-apitomcat-jsp-api罐子在Maven中包含Tomcat依赖项。每个版本的Tomcat都有一个。通常,将这些范围provided添加到POM中就足够了。这将使你的构建更具可移植性

如果将来升级Tomcat,也只需更新这些jar的版本。

对于专业项目,添加以下依赖项:

<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>

参考

对于gradle项目:

dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}

或下载javax.servlet.jar并添加到你的项目中。

这也可能是原因。我已经提出以下pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

未解决的问题是由于排除spring-boot-starter-tomcat。只要删除<exclusions>...</exclusions>依赖就可以解决问题,但是确保这样做也会排除嵌入式tomcat服务器。

如果你也需要嵌入式tomcat服务器,你可以用compile scope添加相同的依赖项。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>

假设有一个简单的动态Web项目。确保Tomcat存在于项目的构建路径中。

首先在您的机器上下载/安装本地tomcat实例。假设我们安装了tomcat v8.5。

现在配置Eclipse全局服务器运行时环境

Windows > Preferences > Server > Runtime Environments > Add > Apache > Apache Tomcat v8.5 > Next > Browse Tomcat Installation directory > Next > Finish.

现在创建动态web项目,我们看到导入javax。Servlet无法解决问题。请按照以下步骤解决此问题。

Right Click On Project > Build Path > Configure Build Path > Libraries > Add Library > Server Runtime > Select your Apache Tomcat instance > Finish > Apply and Close.

所有的错误都会消失。