idea运行TomcatHTTP状态 404 - 未找到 类型 状态报告 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/10.1.41
时间: 2025-06-02 19:12:12 AIGC 浏览: 62
### Tomcat 10.1.41 HTTP 404 错误解决方案
HTTP 404 错误通常表示请求的资源未找到。在使用 Tomcat 10.1.41 时,出现此错误可能与以下原因相关:Servlet API 版本变更、配置文件问题或依赖缺失等。以下是针对该问题的详细分析及解决方案。
#### 1. Servlet API 版本兼容性问题
从 Tomcat 10 开始,Servlet API 的命名空间从 `javax.servlet` 迁移到了 `jakarta.servlet`[^2]。如果代码中仍然使用旧的 `javax.servlet` 命名空间,则会导致 Tomcat 无法加载相应的类,从而引发 404 错误。
**解决方法**:
- **升级代码到 Jakarta EE**:将项目中的所有 `javax.servlet` 替换为 `jakarta.servlet`。例如:
```java
// 修改前
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
// 修改后
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
```
- **更新依赖版本**:确保 Maven 或 Gradle 中的依赖版本支持 Jakarta EE。例如,在 Maven 的 `pom.xml` 中添加以下内容:
```xml
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
```
#### 2. 配置文件问题
检查 Tomcat 的 `web.xml` 和项目的部署描述符是否正确配置。如果部署描述符中存在语法错误或路径不匹配,也可能导致 404 错误。
**解决方法**:
- 确保 `web.xml` 文件符合 Jakarta EE 的规范。例如:
```xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_5_0.xsd"
version="5.0">
</web-app>
```
- 检查项目的 URL 映射是否正确。例如,确保 Servlet 的映射路径与访问路径一致:
```xml
<servlet-mapping>
<servlet-name>exampleServlet</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
```
#### 3. Maven 依赖未正确发布
如果项目使用 Maven 构建,并且 Tomcat 在启动时未加载所需的依赖库,也可能导致 404 错误。这通常是由于 Eclipse 的 Server Runtime 配置不当引起的[^4]。
**解决方法**:
- 右键点击项目 -> Properties -> Java Build Path -> Libraries,确认 Server Runtime 是否设置为 Tomcat 10.1。
- 确保 Maven 依赖已正确添加到项目的构建路径中。可以在 Eclipse 中右键点击项目 -> Deployment Assembly,添加 Maven Dependencies 到 Web-INF/lib 目录。
#### 4. Spring 上下文加载失败
如果项目使用了 Spring 框架,并且在 Tomcat 启动时未正确加载 Spring 上下文,也可能导致 404 错误[^5]。
**解决方法**:
- 检查 `web.xml` 中是否正确配置了 `ContextLoaderListener`:
```xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
```
- 确保 Spring 配置文件(如 `applicationContext.xml`)位于正确的路径下,并被正确加载。
---
### 示例代码
以下是一个简单的 Servlet 示例,展示如何在 Jakarta EE 下实现基本功能:
```java
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello from Jakarta Servlet!</h1>");
}
}
```
---
阅读全文
相关推荐

















