如何在Eclipse项目中导入javax.servlet API?

时间:2010-11-02 10:04:27

标签: java eclipse servlets

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

15 个答案:

答案 0 :(得分:399)

确保您拥有正确的Eclipse和服务器

确保您至少使用Eclipse IDE for Java EE developers(使用 EE )。它包含用于创建动态Web项目和轻松集成servlet容器的开发工具(这些工具是Web Tools Platform,WTP的一部分)。如果你已经有Eclipse IDE for Java(没有EE),并且手动安装了一些与EE相关的插件,那么很可能它没有正确完成。你最好把它丢弃并抓住真正的Java IDE for Java EE。

您还需要确保已在计算机上安装了servletcontainer,该servletcontainer至少实现与生产环境中的servletcontainer相同的Servlet API版本,例如Apache TomcatOracle GlassFish,{ {3}} / JBoss AS等。通常,只需下载ZIP文件并将其解压缩就足够了。对于Tomcat,请下载EXE格式,这仅适用于基于Windows的生产环境。另见a.o. WildFly

servletcontainer是Servlet API的具体实现。请注意,Oracle.com上的Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use下载基本上包含GlassFish。因此,如果您已经下载了Java EE SDK,那么您基本上已经拥有了GlassFish。另请注意,例如GlassFish和JBoss AS / WildFly more 不仅仅是一个servletcontainer,它们还支持JSF,EJB,JPA和所有其他Java EE的功能。另见a.o. Java EE SDK


在Eclipse中集成服务器并将其与Project

相关联

在您的计算机上安装了Eclipse for Java EE和servletcontainer之后,请在Eclipse中执行以下步骤:

  1. 在Eclipse中集成servletcontainer

    一个。 通过服务器视图

    • 打开底部框中的服务器视图。
    • 右键单击并选择新建>服务器
    • 选择适当的servletcontainer品牌和版本,然后浏览向导。

      What exactly is Java EE?

    或者,通过Eclipse首选项

    • 打开窗口>偏好>服务器>运行时环境
    • 您可以在此处添加编辑删除服务器。

      enter image description here

  2. 将服务器与项目相关联

    一个。 在新项目中

    • 打开左侧的 Project Navigator / Explorer
    • 右键单击并选择新建>项目然后在菜单 Web>动态Web项目
    • 在向导中,将目标运行时设置为集成服务器。

      enter image description here

    或者,在现有项目中

    • 右键单击项目并选择属性
    • 目标运行时部分中,选择集成服务器。

      enter image description here

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


  3. 永远不要携带松散的服务器专用JAR文件

    在任何情况下,您都不需要在项目的 Build Path 属性中摆弄。您最重要的是从不手动复制/下载/移动/包含各个servletcontainer特定的库,如servlet-api.jarjsp-api.jarel-api.jarj2ee.jar它只会导致未来的可移植性,兼容性,类路径和可维护性问题,因为当它部署到不同make /版本的servlet容器时,webapp将无法工作,而不是那些库最初从

    如果您正在使用Maven,则需要确保已将目标运行时已提供的特定于servlet容器的库标记为javaee.jar

    以下是一些典型的例外情况,当您将servletcontainer特定库丢弃<scope>provided</scope>甚至/WEB-INF/lib/JRE/lib等时,可以通过不小心尝试修复编译错误:

答案 1 :(得分:217)

import javax.servlet

第1步

转到项目的属性(使用 Alt + Enter 或righ-click)

第2步

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

答案 2 :(得分:77)

与Hari有点不同:

  

右键点击项目---&gt;属性---&gt; Java构建路径---&gt;添加库... ---&gt;服务器运行时---&gt; Apache Tomcat ----&gt;完成。

答案 3 :(得分:13)

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

执行此步骤

enter image description here

答案 4 :(得分:12)

快速修复 - 这在Eclipse中工作 - 右键单击​​项目 - &gt;属性 - &gt; Java构建路径(Tab) - &gt;添加外部JAR - &gt;找到servlet api jar实现(如果Tomcat - 它名为servlet-api.jar) - &gt;单击确定。就是这样!!

答案 5 :(得分:11)

在pom.xml中添加javax.servlet依赖项。你的问题将得到解决。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

答案 6 :(得分:5)

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

  **OR**

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

  1. 右键单击项目。
  2. 转到“属性”。
  3. 转到Java Build Path。
  4. 从标签中选择添加库选项。
  5. 添加Jar文件
  6. 提供servlet-api.jar文件的路径。
  7. 清理并构建您的项目。

答案 7 :(得分:5)

我知道这是一个老帖子。但是,我观察了另一个实例,在该项目中已经添加了Tomcat,但我们仍然遇到此错误。这是为了解决这个问题:
Alt + 输入
项目方面
右边的细节旁边是另一个标签“Runtimes”。 安装的tomcat服务器将在那里列出。选择它。
保存配置并完成!

希望这有助于某人。

答案 8 :(得分:3)

来自wikipedia

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文件。

答案 9 :(得分:3)

对于maven项目,添加以下依赖性:

<!-- 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>

Reference

对于gradle项目:

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

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

答案 10 :(得分:2)

在与“Dynamic Web Module”相关的项目创建期间,我收到了一个空指针异常。

要让项目进行编译(即成功导入javax.servlet),我必须转到项目的属性,选择 Project Facets 侧边栏,勾选动态网络模块,然后点击应用

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

答案 11 :(得分:2)

在我的情况下,当我进入 Targetted Runtimes 屏幕时,尽管安装了Tomcat 7,但未列出(禁用)。

要修复,我必须转到偏好设置 - &gt;服务器 - >运行时环境,然后卸载并重新安装Tomcat 7.

答案 12 :(得分:2)

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

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

答案 13 :(得分:0)

  
    

首先,您应该永远不要手动复制/下载/移动/包含servlet-api.jar等各个servletcontainer特定的库

  

@BalusC,

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

另一种解决方案是使用Eclipse“配置构建路径”&gt;图书馆&gt;添加外部Jars,并添加任何Container选择使用的servlet api。

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

答案 14 :(得分:0)

这也可能是原因。我想出了以下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>