ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

解决tomcat输入localhost:8080报404错误

2022-05-06 19:01:30  阅读:238  来源: 互联网

标签:Web 8080 Tomcat tomcat 项目 404 localhost


运行一下我之前的项目。首先在 Apache Tomcat/bin 下找到 tomcat9w.exe 点击 start 之后发现进度条走到一半就停了,也不报错;使用 start.bat 倒是启动很快,无报错信息。

怎么回事呢?

于是去 控制台 cmd ,打开服务 services.msc,找到 ApacheTomcat 服务点击启动,这个时候报错了:“windows不能在本地计算机启动Apache Tomcat.有关更多信息,查阅系统事件日志.如果这是非Microsoft服务,请与服务厂商联系,并参考特定服务错误代码0”……在网上查了一圈没有找有效的答案,因为我之前一直用,没出现过问题。也不可能是tomcat32位和jdk64位的版本不一致导致的,暂未解决……

随后我查看了logs日志,确保jdk的安装没有问题。意外的是发现了java虚拟机路径里面填写的jdk的版本不匹配,要打开 Tomcat 属性栏的 Java 面板,在 Java Virtual Machine 查看 jdk 版本是否和本机实际安装的对应:

 

改过来之后,tomcat 可以正常启动了。

(还有一种 tomcat 启动超时的原因是与项目相关的数据库服务未打开)。

启动成功之后,新问题出现了:

当我在浏览器输入 http://localhost:8080 的时候,会报 404 错误,这时有人会说:是不是 conf/server.xml 端口号没配置正确或者端口冲突?我确认了,没有发现冲突。

最后经过我仔细检查此文件,发现一条比较奇怪的:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
我这里的 appbase 的值不知什么时候变成了 wtpwebapps,我修改为 webapps 之后,就成功打开了 localhost:8080,访问项目也没问题啦!(之前使用 eclipse 发布项目,它默认部署到工作目录下的 .metadata/.plugins /org.eclipse.wst.server.core/tmpX/wtpwebapps中,tmpX 临时文件夹里面存放着该项目的信息,会不会是这个原因?)

注意:

由于我之前的项目都放在 webapps 下面,而我的配置不知什么时候被修改成了 wtpwebapps,从而导致访问不了localhost:8080,更不要说访问项目路径了,我心里有点纳闷。

做个实验:

我又把 server.xml 的 host 配置改回:

<host appBase="wtpwebapps" ...>
把我之前做的一个项目:BoutiqueCourse 放进 tomcat 下的 wtpwebapps 中去,再重启 tomcat 服务,然后在浏览器输入localhost:8080 发现依旧是报 404,如图:

但是在后面拼接上项目名则可以成功进入。

 

查找原因,发现很简单:

当我的配置为默认的为 8080 端口,并且 server.xml 中 host 配置的 appbase="webapps" 的时候,当我直接输入 localhost:8080 回车,由于在 tomcat/webapps 下有一个 ROOT 文件夹,这个目录存放 tomcat 的基本应用,这时会执行此默认项目。输入http://localhost:8080 会通过hosts文件中的解析,将 localhost 解析为 127.0.0.1,这个地址也即为 http://127.0.0.1:8080。默认如果端口后面无项目名,那么访问的将是 ROOT 下的项目看到的就是汤姆猫页面。

然而我把 appbase 的值改为了 wtpwebapps,里面只有一个项目文件夹,所以直接输入 localhost:8080 找不到默认工程文件,故显示404。而之后我又在后面追加自己的项目名称,则自然就会直接访问该项目。

PS:这里提一下appbase的作用:

appBase:设置 Web 应用程序组的路径。一个虚拟主机可以由多个 Web 应用程序构成,所以这里的 appBase 所指向的目录应该是准备用于存放这一组 Web 应用程序的目录,而不是具体某个 Web 应用程序的目录本身(即使该虚拟主机只由一个 Web 应用程序组成)。appBase 属性的值可以是相对于 Tomcat 安装目录的相对路径,也可以是绝对路径,需要注意的是该路径必须是 Tomcat 有权限访问的。如果你想自己指定路径,那么应该在 docBase 里面,简单点,直接把他们复制到appBase下面就行了。
————————————————
版权声明:本文为CSDN博主「Antrn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38232598/article/details/82823324

标签:Web,8080,Tomcat,tomcat,项目,404,localhost
来源: https://www.cnblogs.com/diandouchengbing/p/16230009.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有