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


当前回答

假设有一个简单的动态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.

所有的错误都会消失。

其他回答

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

@BalusC,

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

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

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

这也可能是原因。我已经提出以下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-start -tomcat。只需删除<排除>…</exclusions>依赖它将解决问题,但确保这样做也将排除嵌入式tomcat服务器。

如果你也需要嵌入式tomcat服务器,你可以添加相同的依赖编译范围。

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

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

执行这一步

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

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

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

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