HTTP状态 404 - 未找到 类型 状态报告 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.90

错误背景

数据库课程设计需要用intelligent idea制作web项目,并在页面上输出一定的内容,需要和Tomcat相连。都配置好后,每次运行都出现:
请添加图片描述
我把整个过程总结了一遍。

创建web页面执行步骤

1.创建web项目

首先需要在idea中创建一个web项目,之前的版本可能直接就有web这个模版,但更新后的没有这个,如果有直接用就好了,没有大家可以参考这篇文章:
文章链接: https://blog.youkuaiyun.com/m0_67401761/article/details/124891981

参考文章创建好的项目目录应该是这样的:(标红点的是我后面加的,下面会有步骤介绍)
请添加图片描述
目录中的index.jsp的内容会显示在弹出的页面中。

jsp内容:(会写的话也可以写自己的)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>JSP example</title>
  </head>
  <body>

  <p style="color:blue">
    <%=(new java.util.Date()).toString()%>
    从来不是他们
    刻画的那种样子
    不是谁的王子
    讲不出煽情的字
    在喧嚣的王国
    守护自己的寂寞
    门外惊心动魄
    门里我泰然自若

  </p>

  </body>
</html>

2.对该项目用Tomcat进行配置

如果没有安装Tomcat需要先安装才可以使用,如果已经安装好,可以忽略下载安装步骤,能找到它的根目录就可以。

下载安装Tomcat

推荐大家看这篇文章就可以了,写的真的很全,我也出现了乱码问题,看了之后就解决了,但是我用bin的strar.bat运行Tomcat时,窗口输出的还是乱码,然而我用idea运行时,下面就不是乱码。
(我觉得这也没关系,idea输出的是正常的就行了)
文章链接:https://blog.youkuaiyun.com/weixin_47700137/article/details/116055222

我安装后放置的位置:
请添加图片描述
能找到位置就可以。
为什么我下载了2个呢?一开始我是下载9的那个,但我发现每次使用都出现HTTP的错误,所以我就下载了一个低版本,(总感觉一些新版本的内容出来时间不长的时候会有很多bug,当然也是正常情况,软件每次更新不就是更新它的错误么,要是一直不出错那也不用更新了,软件维修人员应该都失业了吧) 如果大家使用时也出现类似的错误,建议大家可以用一个低版本的,毕竟经过之前多次出错和修改也是比较靠谱的。

通过start.bat运行时:

请添加图片描述

请添加图片描述
这个输出还是有乱码的

通过idea运行时:(此时都已经配置完成,如果没配置完不能运行)
请添加图片描述
请添加图片描述
输出信息已经不是乱码了。

在idea中配置Tomcat

首先我们点击编辑配置
请添加图片描述

就进入下面这个页面,配置名字建议取和Tomcat版本号一样的名字,我的版本就是Tomcat 8.5.90,所以取和它一样的名字,这样便于理解。

1步骤就是进入选择哪个Tomcat,下面具体讲解。
2步骤是选择哪个浏览器,default是指电脑默认的浏览器。
3步骤你可以按我的那个写,就是最后在页面上显示的那个网址。
后面2个画横线的建议和我的一样。
请添加图片描述

点击1步骤后就显示1指向箭头的提示框,再选择2,就是选择具体Tomcat的位置,2指向的提示框,要选择下载的Tomcat对应的根目录,这个选择好后面的会自动填好,点击OK就好了。

请添加图片描述

上述都做完后,还需要在External Libraries添加Tomcat的依赖包:(就是我第一张图片画红点的那个)
请添加图片描述

添加好了之后就是这样显示的:

请添加图片描述

请添加图片描述
到现在为止都完成了,可以运行了。

错误原因、解决办法

我认为最主要的原因就是Tomcat的版本问题,我用9的时候都会出现404报错,第一次改用8的时候就正确了,所以不是版本越新越好,而是哪个靠谱用哪个。



<think>好的,我现在需要解决用户关于HTTP 404错误在Apache Tomcat 10.1.36中的原因及解决方案的问题。首先,我得回忆一下HTTP 404错误的基本概念。404错误意味着服务器找不到客户端请求的资源,这可能由多种原因引起。接下来,我需要结合用户提供的引用内容,特别是与Tomcat相关的引用,来找出可能的原因和解决方法。 首先,用户提供的引用[1]提到Tomcat的端口问题,比如6080端口被占用或服务未启动。虽然用户现在的问题是关于404错误,但服务未启动或者端口配置错误也可能导致无法访问资源,进而显示404。需要检查Tomcat是否正常运行,服务是否启动。 然后引用[4]详细说明了端口被占用的解决方法,比如使用netstat查找占用端口并终止进程,或者更改Tomcat的端口。如果Tomcat的端口被其他程序占用,可能导致服务器无法启动,但一旦Tomcat成功启动后,如果资源路径错误,仍可能出现404错误。因此,首先要确认Tomcat是否成功启动,这可以通过访问默认页面如http://localhost:8080来验证。如果Tomcat没有正确启动,可能根本连默认页面都打不开,这时候需要先解决启动问题。 接下来,引用[2]和[3]提到Tomcat版本与库文件的兼容性问题,比如JSTL标签库的配置错误或者类文件版本不兼容。这可能引起应用部署失败,导致请求的资源存在,从而返回404。需要检查应用的WEB-INF/lib目录下是否有正确的依赖库,特别是Servlet和JSP相关的jar包是否与Tomcat 10兼容。Tomcat 10及以上版本使用了Jakarta EE的命名空间,而旧版可能使用javax,这可能导致类加载失败,进而资源无法访问。 现在,针对HTTP 404错误的具体原因,我需要分步骤考虑: 1. **Tomcat服务未启动**:如果Tomcat服务没有启动,任何请求都会失败。用户应检查服务状态,确保Tomcat正在运行。可以通过访问默认页面来验证,如果无法访问,可能需要启动服务或解决端口冲突问题,如引用[4]所述。 2. **资源路径错误**:最常见的404原因是请求的URL不正确。例如,部署的应用上下文路径是否正确,文件是否放在正确的目录下(如WEB-INF或webapps目录下的相应位置)。需要确认应用的部署结构是否符合Tomcat的要求,比如war包是否正确展开。 3. **应用部署失败**:如果应用未能正确部署,即使Tomcat运行正常,访问该应用的URL也会返回404。需要检查Tomcat的日志文件(如catalina.out或localhost.log),查看部署过程中是否有错误或异常。引用[3]中的类格式异常可能导致部署失败,需检查依赖库版本是否兼容。 4. **配置问题**:server.xml或web.xml中的配置错误可能导致资源无法访问。例如,Connector配置错误导致端口不正确,或者web.xml中servlet映射错误。需要检查配置文件的正确性,特别是上下文路径和servlet映射。 5. **权限问题**:文件或目录的权限设置不正确,导致Tomcat无法读取资源文件。需要确保Tomcat用户有权限访问webapps目录下的应用文件。 6. **缓存问题**:浏览器或服务器缓存可能导致旧的资源路径被缓存,即使资源已更改或移动,仍返回404。需要清除缓存或尝试使用不同的浏览器测试。 结合用户提供的引用,特别是引用[4]中的端口占用问题,如果Tomcat无法启动,自然无法访问资源,但一旦启动后,其他因素如路径错误或部署问题就会成为主因。例如,用户可能正确启动了Tomcat,但应用未正确部署到webapps目录,或者上下文路径配置错误,导致URL拼写错误。 另外,Tomcat 10.1.x使用Jakarta EE 9,包名从javax.*改为jakarta.*,这可能导致旧版库不兼容,如引用[2]中的JSTL问题。如果应用使用了旧的库,可能会导致Servlet或JSP无法正确编译,进而无法生成对应的类文件,请求时返回404。需要更新依赖库到兼容Jakarta EE 9的版本,或者调整应用的命名空间。 解决方案方面,可以建议用户逐步排查: - 检查Tomcat是否运行,端口是否被占用(引用[4]的方法)。 - 确认应用是否正确部署,检查webapps目录和日志。 - 验证URL路径是否正确,包括上下文路径和文件位置。 - 更新或替换不兼容的库文件,确保使用Jakarta EE 9兼容的依赖(引用[2]和[3]的建议)。 - 检查配置文件是否有错误,如server.xml和web.xml。 - 清除缓存,或尝试重新部署应用。 最后,确保用户理解404错误可能由多种因素引起,需要系统地进行排查,从服务状态资源路径,再到配置和依赖库的兼容性。</think>### HTTP 404错误的原因及解决方法(Apache Tomcat 10.1.36) #### **一、HTTP 404错误常见原因** 1. **Tomcat服务未启动** -Tomcat未成功启动,所有请求均会失败。可通过访问默认页验证(如 `http://localhost:8080`)。若无法访问,需检查服务状态或端口冲突[^4]。 - 检查方法: ```bash # 查看Tomcat服务是否运行 netstat -ano | findstr "8080" ``` 2. **资源路径错误** - 请求的URL与服务器实际资源路径不匹配。例如: - 应用未部署到 `webapps` 目录。 - 文件未放在 `WEB-INF` 外的正确位置。 - 上下文路径(Context Path)配置错误。 3. **应用部署失败** - 依赖库不兼容(如Tomcat 10使用Jakarta EE,旧版库可能无法加载)[^2][^3]。 - 部署时未生成WAR包或解压异常。 - 日志中可能报错:`ClassFormatException`(需升级Tomcat或降级依赖)。 4. **配置问题** - `server.xml` 中 `Connector` 端口被占用或配置错误。 - `web.xml` 中未定义Servlet映射或路径错误。 --- #### **二、解决方法** **步骤1:确认Tomcat服务状态** - 启动Tomcat服务,并通过日志(`logs/catalina.out`)检查启动是否成功。 - 若端口被占用,修改 `server.xml` 中的端口号或终止占用进程: ```xml <!-- 修改端口示例 --> <Connector port="8081" protocol="HTTP/1.1" ... /> ``` **步骤2:验证资源路径** - 确保应用已部署到 `webapps` 目录,且文件名与URL中的上下文路径匹配。 - 例如:`webapps/myapp/index.html` 对应 `http://localhost:8080/myapp/index.html`。 **步骤3:检查依赖兼容性** - Tomcat 10.1.x 使用 **Jakarta EE 9+**,需确保依赖库(如JSTL)支持 `jakarta.*` 命名空间[^2]: ```xml <!-- 正确依赖示例(Jakarta EE 9+) --> <dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> <version>2.0.0</version> </dependency> ``` **步骤4:排查配置文件** - 检查 `web.xml` 中的 `<servlet-mapping>` 是否正确定义。 - 确认 `server.xml` 中无重复的 `Context` 配置。 **步骤5:查看日志定位问题** - 检查 `logs/localhost.log` 或 `logs/catalina.out`,搜索 `SEVERE` 或 `WARNING` 级别的错误。 --- #### **三、常见案例** - **案例1:依赖库不兼容** ```log jakarta.servlet.ServletException: java.lang.ClassNotFoundException: jakarta.servlet.http.HttpServlet ``` **解决**:替换为Tomcat 10兼容的依赖(如 `jakarta.servlet-api`)。 - **案例2:端口冲突** ```log Address already in use: bind ``` **解决**:使用 `netstat -ano` 查找占用进程并终止,或修改端口。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_房似锦_

好心人哇!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值