如何在Eclipse项目中导入javax.servlet/jakarta.servlet API?
我想在Eclipse中使用servlet进行开发,但是它说包如何在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
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中执行以下步骤:
- 打开底部框中的Servers视图
- 右键单击此处并选择新建>服务器
- 选择适当的servletcontainer品牌和版本,并浏览向导
- 打开窗口>首选项>服务器>运行时环境
- 您可以在此处添加、编辑和删除服务器
- 打开左侧的项目导航器/资源管理器
- 右键单击此处并选择新建>项目,然后在菜单Web>动态Web项目中
- 在向导中,将目标运行时设置为集成服务器
- 右键单击项目并选择属性
- 在目标运行时部分,选择集成服务器
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>