Java Servlet - ERROR 404 Required resource not found - 我找不到错误

Java Servlet - ERROR 404 Required resource not found - I can't find the error

我在 JSP 中有一个 Web 应用程序。我换了一台电脑,并将我的 eclipse 项目迁移到了新电脑上。在旧的我有Tomcat 9,现在我有Tomcat 10。当我把所有东西都发送到新电脑时,我没有对代码做任何更改。

当我 运行 我的应用程序搜索第一个 servlet 时,它找不到它,它向我发送错误消息:

HTTP 状态 404 - 未找到
状态报告类型
消息所需资源 [/WebProject/LoginServlet] 不可用
描述 所需资源不可用。
阿帕奇 Tomcat/10.0.2

值得一提的是,我不使用实现描述符,我使用带有@WebServlet的注解

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Servlet implementation class LoginServlet
*/
@SuppressWarnings("serial")
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
...my content...
}

我在另一个测试项目中重写了应用程序的一部分,因为我认为 Tomcat 的第 9 版和第 10 版之间可能会有一些变化,但结果是一样的。虽然看起来我必须定义在使用注释时默认将 servlet 带到哪里,但我不确定在哪里可以配置它。

谁能帮助或指导我解决这个问题?

虽然症状不同,但您遇到的问题与 相同。

Tomcat 实现了 Jakarta EE 9 的标准,出于版权原因,它有一个非常重大的变化:所有 API 都将命名空间从 javax.* 更改为 jakarta.*。您的服务器扫描类路径以查找 jakarta.servlet.WebServlet 注释,因此它会忽略您的 javax.servlet.WebServlet 注释。

您有两种解决方案之一:

  • keep using Tomcat 9:相信会支持很长一段时间,以及所有使用javax.*前缀的库,
  • 在 Eclipse 中用 Tomcat 的 10 替换您正在编码的运行时并更新导入的 类 的前缀。还有一个 migration tool 可以为您完成。