java - 在 Java 构建路径中找不到“javax.servlet.http.HttpServlet”
问题描述
我只是想学习一些 JSP,但我反复收到该错误。我已经尝试了互联网上的所有内容,但没有发生任何事情。我正在使用 Tomcat v10 和 JDK15.0.2。当我创建一个新的 JSP 文件时会发生此错误。
解决方案
Java EE ⇝ Jakarta EE
阅读Apache Tomcat 10下载文档的首页。引用:
Tomcat 10 及更高版本的用户应该知道,由于作为 Java EE 转移到 Eclipse 基金会的一部分而从 Java EE 转移到 Jakarta EE,所有已实现 API 的主要包已从 javax.* 更改为 jakarta .*. 这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。
并阅读Apache Tomcat 10主要文档的第一页。引用:
Apache Tomcat 10.0 版实现了 Jakarta EE 的 Servlet 5.0 和 JavaServer Pages 3.0 规范……</p>
作为 Oracle 将 Java EE(企业版)的责任移交给 Eclipse 基金会的一部分,Jakarta EEjavax.*
中的包名称从jakarta.*
. 您可以在 Tomcat 页面上阅读此内容,哪个版本?— Apache Tomcat 版本,以及在 Internet 上。
- Tomcat 10适用于向Jakarta EE版本 9 及更高版本迁移的人们,使用
jakarta.*
具有最新 Servlet 和 JSP 规范的命名空间。 - Tomcat 9
javax.*
适用于使用流行的Servlet 4规范和相关 API的人坚持使用命名空间。
如果您想使用最新的 API,请将您的import
语句更改为 usejakarta.
而不是javax.
. 或者将 Tomcat 10 换成 Tomcat 9 以使用旧的javax.
命名空间。
- 如果您正在学习和试验,我建议将
jakarta.
命名空间与 Tomcat 10 一起使用。 - 如果您正在使用尚未更新到
jakarta.
命名空间的重要库或工具,请坚持使用较旧的 API 和 Tomcat 9。
已经讨论了通过自动化某些命名空间切换来提供帮助的工具。但我不知道那里的情况。
推荐阅读
- excel - 如何在录制的宏中将单元格引用到替换代码中
- swift - 如何在 SwiftUI 中使用 SF Rounded 字体?
- javascript - 在 JS 中将日期格式数据库 (ymd) 更改为欧洲 (dmy)
- mysql - 仅当同一字段中的另一个值不存在时,如何在 MySQL 中显示字段值?IF/ELSEIF 还是 CASE?
- shell - 在 Shell 脚本中执行并存储结果
- r - 向数据框添加一列,跳过粘贴 -
- mysql - 如何从 mysql 查询中获取数据结果以及查询返回的行数?
- php - 使用 Google Maps API 生成随机地址
- angular - 使用验证器创建自定义 FormControl
- reporting-services - 通过 ODBC 连接在 SSRS 中调用 Oracle 存储过程