Intellij IDEA + Tomcat 出现 HTTP status 404错误的解决办法

最近要作POC,接了个老项目改,使用war exploded部署到本机的Tomcat(8.5版)html

经过Intellij IDEA启动Tomcat的时候发现系统的登陆页面出现HTTP-status-404错误,这时直接在浏览器中打开http://localhost:8080则能打开Tomcat的欢迎页面,说明Tomcat起来了,可是没有正确加载webapps目录下的东西。web

更奇怪的是,经过Tomcat的bin目录下的启动脚本就能够正常启动,不管是双击startup.bat仍是在该目录的cmd下使用catalina.bat run都能正常启动项目。正则表达式

 

若是有相似状况的朋友,能够留意一下两种启动方式在启动时日志里面的环境变量,特别是CATALINA_HOME浏览器

由于在个人机器上,两种方式启动时这个变量的值是不同的,在bin目录下经过bat脚本启动时,CATALINA_HOME就是该bin所在的Tomcat目录;tomcat

可是经过Intellij IDEA启动时,该变量的值变为了:C:\Users\Cratical\.IntelliJIdea2017.1\system\tomcat\Unnamed_Test-Project_3_0_4app

两个目录下面都有conf文件夹,文件夹里面的配置文件的名称和数量也都同样,经过比对,发现conf目录下,server.xml的内容有一些区别,注意这一行webapp

 

<Host name="localhost" appBase="C:\Tomcat\webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" deployIgnore="^(?!(manager)|(tomee)$).*">spa

 

由于在Intellij IDEA中,一个war格式的artifact是能够修改Output Directory的位置的,默认值是当前Project根目录下的target文件夹;若是直接使用Intellij IDEA启动Tomcat的时候,Tomcat目录下的webapps目录是找不到相关部署文件夹的。日志

而Intellij IDEA是经过生成本身的一个CATALINA_HOME,修改其中的server.xml中的appBase来实现这个目标的。server

 

回到上面那行配置,注意那个deployIgnore属性,个人web目录名称正好被上面的正则表达式匹配到,因此Tomcat在加载的时候就直接忽略了,致使了那个404错误。

 

Tomcat server.xml中各项配置的含义,参见:http://www.importnew.com/17124.html

相关文章
相关标签/搜索