导入 javax.servlet 仍然无法解析 [重复]

Posted

技术标签:

【中文标题】导入 javax.servlet 仍然无法解析 [重复]【英文标题】:The import javax.servlet cannot be resolved STILL [duplicate] 【发布时间】:2022-01-05 14:54:07 【问题描述】:

这是我的 Eclipse 范围的 JRE 定义,清楚地显示 servlet-api.jar 已添加:

这里还有一些似乎永远无法解决的旧导入错误。 Java不是很棒吗?对于为什么这仍然行不通,有人有一个简单、事实的答案吗?

【问题讨论】:

该项目说它正在使用 JavaSE-11 执行环境 - 是否设置为使用 Java 17? 您不应该将 Tomcat 库作为普通库而不是 JRE 包含吗?很抱歉好几个世纪没用过 Eclipse。 您无法将 Tomcat 服务器库添加到构建路径中吗?请尝试更新-右键单击项目->构建路径->配置构建路径...->库(选项卡)->选择类路径->添加库->服务器运行时->选择您必须添加的那个适用于 Tomcat 10。 如果你还没有设置Tomcat服务器运行时,那么Windows -> Preferences -> Server -> Runtime Environments -> Add。 您正在使用 Tomcat 10 的 servlet JAR,它使用 JakartaEE 9,它从 javax.* 包命名空间切换到 jakarta.* 包命名空间。要么降级到 Tomcat 9,要么确保使用新的 JakartaEE 9 包名称。 【参考方案1】:

jakarta.servletjavax.servlet

是否有人对为什么这仍然不起作用有一个简单、事实的答案?

因为:

您正在针对 Tomcat 10.0.10 servlet-api JAR 文件进行构建。 Tomcat 10.0.x 实现了 Servlet 规范的 5.0 版;见http://tomcat.apache.org/whichversion.html Servlet 5.0 是 Jakarta EE,而不是 Java EE;见https://en.wikipedia.org/wiki/Jakarta_Servlet#History 在 Jakarta EE 的更高版本中,servlet 类的包名称已从 javax.servlet 更改为 jakarta.servlet

您的代码正在尝试使用包名。

解决方案:

    将您的 webapp 代码更改为从 new jakarta.servlet 包导入,或者 回滚到支持旧版 Servlet 规范的 Tomcat 版本;即 Tomcat 9.0.x 或更早版本。

【讨论】:

以上是关于导入 javax.servlet 仍然无法解析 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 无法解析导入 javax.servlet.*;

javax.servlet.http.HTTPServlet Import 无法解析,而包的其余部分可以正常导入

eclipse下遇到 无法解析类型 javax.servlet.http.HttpServletRequest

无法解析javax.servlet的解决方法

无法解析javax.servlet的解决方法

无法解析类型 javax.servlet.http.HttpServlet。从必需的 .class 文件间接引用了它