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

版权声明:原创博客,未经允许,不可转载,[email protected] https://blog.csdn.net/qq_38232598/article/details/82823324

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

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

然后查看logs日志,确保jdk安装没问题,发现是由于jdk的版本不正确,在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配置改回:appBase="wtpwebapps",把我之前做的一个项目:/BoutiqueCourse放进tomcat下的wtpwebapps中去,再重启tomcat服务,然后在浏览器输入localhost:8080发现依旧是404,

但是在后面加上项目名则可以进入。

查找原因,发现很简单:

当我的配置为默认的为080端口、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下面就行了。 

猜你喜欢

转载自blog.csdn.net/qq_38232598/article/details/82823324