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 可以为您完成。
我在 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 可以为您完成。