【问题标题】:Java Servlet - ERROR 404 Required resource not found - I can't find the errorJava Servlet - 错误 404 未找到所需资源 - 我找不到错误
【发布时间】:2021-06-02 15:15:09
【问题描述】:

我在 JSP 中有一个 Web 应用程序。我进行了计算机更改并将我的 eclipse 项目迁移到新计算机。在旧的我有 Tomcat 9,现在我有 Tomcat 10。当我将所有内容发送到新计算机时,我没有对代码进行任何更改。

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

HTTP 状态 404 - 未找到
状态报告类型
消息 所需资源 [/WebProject/LoginServlet] 不可用
说明 所需资源不可用。
Apache 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 带到哪里,但我不确定在哪里可以配置它。

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

【问题讨论】:

标签: java jsp tomcat servlets


【解决方案1】:

您的问题与this question 相同,但症状不同。

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

您有两种解决方案之一:

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

【讨论】:

  • 这正是我 10 分钟前阅读的内容。它解决了这个问题!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 2014-12-15
  • 2020-08-03
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多