Intellij IDEA + Tomcat 出现 HTTP status 404错误的解决办法
Posted Cratical的成长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intellij IDEA + Tomcat 出现 HTTP status 404错误的解决办法相关的知识,希望对你有一定的参考价值。
最近要做POC,接了个老项目改,使用war exploded部署到本机的Tomcat(8.5版)
通过Intellij IDEA启动Tomcat的时候发现系统的登录页面出现HTTP-status-404错误,这时直接在浏览器中打开http://localhost:8080则能打开Tomcat的欢迎页面,说明Tomcat起来了,但是没有正确加载webapps目录下的东西。
更奇怪的是,通过Tomcat的bin目录下的启动脚本就可以正常启动,无论是双击startup.bat还是在该目录的cmd下使用catalina.bat run都能正常启动项目。
如果有类似情况的朋友,可以留意一下两种启动方式在启动时日志里面的环境变量,特别是CATALINA_HOME。
因为在我的机器上,两种方式启动时这个变量的值是不一样的,在bin目录下通过bat脚本启动时,CATALINA_HOME就是该bin所在的Tomcat目录;
但是通过Intellij IDEA启动时,该变量的值变为了:C:\Users\Cratical\.IntelliJIdea2017.1\system\tomcat\Unnamed_Test-Project_3_0_4
两个目录下面都有conf文件夹,文件夹里面的配置文件的名称和数量也都一样,通过比对,发现conf目录下,server.xml的内容有一些区别,注意这一行
<Host name="localhost" appBase="C:\Tomcat\webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" deployIgnore="^(?!(manager)|(tomee)$).*">
因为在Intellij IDEA中,一个war格式的artifact是可以修改Output Directory的位置的,默认值是当前Project根目录下的target文件夹;如果直接使用Intellij IDEA启动Tomcat的时候,Tomcat目录下的webapps目录是找不到相关部署文件夹的。
而Intellij IDEA是通过生成自己的一个CATALINA_HOME,修改其中的server.xml中的appBase来实现这个目标的。
回到上面那行配置,注意那个deployIgnore属性,我的web目录名称正好被上面的正则表达式匹配到,所以Tomcat在加载的时候就直接忽略了,导致了那个404错误。
Tomcat server.xml中各项配置的含义,参见:http://www.importnew.com/17124.html
以上是关于Intellij IDEA + Tomcat 出现 HTTP status 404错误的解决办法的主要内容,如果未能解决你的问题,请参考以下文章
intellij idea创建SpringMVC项目启动tomcat报错
IntelliJ IDEA控制台启动Tomcat输出中文乱码问题
IntelliJ IDEA 2017.2.6 x64 配置 tomcat 启动 maven 项目
Intellij IDEA 2019 Tomcat8配置Servlet项目创建
在IntelliJ IDEA中启动tomcat出现Can't load AMD 64-bit .dll on a IA 32-bit' platform问题详解