zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第十一周作业
    第十周作业
    第九周作业
    第六周&java实验报告四
    第五周课程总结&试验报告(三)
    第四周课程总结&试验报告(二)
    第二周学习总结
    第三周课程总结&实验报告一
    2019年春第四次课程设计报告
    2019年春第三次课程设计实验报告
  • 原文地址:https://www.cnblogs.com/Cratical/p/6896845.html
Copyright © 2011-2022 走看看