Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Eclipse项目中导入javax.servlet/jakarta.servlet API?_Java_Eclipse_Servlets - Fatal编程技术网

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

如何在Eclipse项目中导入javax.servlet/jakarta.servlet API?,java,eclipse,servlets,Java,Eclipse,Servlets,我想在Eclipse中使用servlet进行开发,但是它说包javax.servlet/jakarta.servlet无法解析。如何将javax.servlet/jakarta.servlet包添加到我的Eclipse项目中 import java.io.IOException; 导入java.io.PrintWriter; 导入javax.servlet.ServletException; 导入javax.servlet.http.HttpServlet; 导入javax.servlet.ht

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

import java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类HelloWorld扩展了HttpServlet{
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
PrintWriter out=response.getWriter();
out.println(“\n”+
“\n”+
“你好,WWW\n”+
“\n”+
“你好,WWW\n”+
"");
}
}
当然,只有将
ServletAPI.jar
添加到Eclipse构建路径时,这才有效。通常,您的应用服务器(例如)将具有正确的jar文件

确保您拥有正确的Eclipse和服务器版本 确保您至少使用了(与企业版)。它包含用于创建动态web项目和轻松集成servletcontainers的开发工具(这些工具是web工具平台WTP的一部分)。如果您已经有了EclipseIDEforJava(没有企业版),并且手动安装了一些相关插件,那么很有可能没有正确完成。您最好扔掉它,为EnterpriseJavaOne获取真正的EclipseIDE

您还需要确保您的机器上已经安装了一个servletcontainer,它至少实现了与生产环境中的servletcontainer相同的ServletAPI版本,例如,/,等等。通常,只需下载ZIP文件并提取它就足够了。对于Tomcat,不要下载EXE格式,这仅适用于基于Windows的生产环境。另见a.o

servletcontainer是ServletAPI的具体实现。请注意,Oracle.com上的下载内容基本上包含GlassFish。所以,如果您碰巧已经下载了JavaEESDK,那么您基本上已经有了GlassFish。还要注意,例如GlassFish和JBossAS/WildFly不仅仅是一个servletcontainer,它们还支持JSF、EJB、JPA和所有其他JavaEE。另见a.o

确保您使用的是正确的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.*;
导入javax.servlet.http.*;

import jakarta.servlet.*;
导入jakarta.servlet.http.*;
为了让它编译,否则您可能会面临这个构建错误

在Java构建路径上找不到超类“javax.servlet.http.HttpServlet”

在Eclipse中集成服务器并将其与项目关联 在您的计算机上安装了Eclipse for Enterprise Java和servletcontainer之后,请在Eclipse中执行以下步骤:

  • 在Eclipse中集成servletcontainer

    a通过服务器查看

    • 打开底部框中的Servers视图

    • 右键单击此处并选择新建>服务器

    • 选择适当的servletcontainer品牌和版本,并浏览向导

    b或通过Eclipse首选项

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

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

  • 将服务器与项目关联

    a在新项目中

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

    • 右键单击此处并选择新建>项目,然后在菜单Web>动态Web项目中

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

    b或,在现有项目中

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

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

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

  • 不要随身携带松散的特定于服务器的JAR文件 在任何情况下,您都不需要在项目的buildpath属性中胡乱摆弄。最重要的是,决不能手动复制/下载/移动/包含特定于servletcontainer的库,如
    servlet api.jar
    jsp api.jar
    el api.jar
    j2ee.jar
    javaee.jar
    ,等等。这只会带来未来的可移植性、兼容性,类路径和可维护性问题,因为当您的webapp部署到与这些库最初从中获取的版本不同的make/版本的servletcontainer时,它将无法工作

    在使用Maven的情况下,您需要绝对确保目标运行时已经提供的特定于servletcontainer的库被标记为
    提供的
    。您可以在下面的答案中找到Tomcat 10+、Tomcat 9-、JEE 9+和JEE 8-的适当
    pom.xml
    依赖声明示例:

    以下是一些典型的例外情况,当您不小心试图修复编译错误而将特定于servletcontainer的库丢弃在
    /WEB-INF/lib
    甚至
    /JRE/lib
    /JRE/lib/ext
    中时,您可能会遇到这些例外情况:

      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>");
        }
      }
      
        **OR**
      
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.0.1</version>
          <scope>provided</scope>
      </dependency>
      
      <!-- 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>
      
      dependencies {
      providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
      }
      
      <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>
      
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>compile</scope>
      </dependency>