• 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:UsersCratical.IntelliJIdea2017.1system omcatUnnamed_Test-Project_3_0_4

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

    <Host name="localhost" appBase="C:Tomcatwebapps" 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

  • 相关阅读:
    hdu 1047 Integer Inquiry
    大数模板(高精度)
    git 学习
    java List 排序
    简单排序总结
    JDK1.8
    webservice 学习笔记 1
    inline-block,inline,block,table-cell,float
    mybatis 学习视频总结记录
    left join right inner join 区别
  • 原文地址:https://www.cnblogs.com/Cratical/p/6896845.html
Copyright © 2020-2023  润新知