项目在intellij idea里配置tomcat可以启动并访问, 打成war包丢到tomcat webapps下能启动却访问不了相关的接口

时间:2024-03-16 08:46:51
  • 背景
    1. springboot 项目,在idea中正常运行(内置tomcat),外部(前端)访问接口正常;
    2. 利用 maven 打包成 war:mvn clean install  --->> xx.war
    3. 机器下载的tomcat 8.5xx 压缩包,解压安装。
        (1) 编辑 tomcat 配置文件设置 访问端口为 项目配置文件中配置的端口号,
        (2) 将打包好的 war 包复制到 tomcat/webapps 目录下
        (3) 启动 tomcat:bin/startup.xx
        (4) 启动成功,访问接口-->> 404
  • 解决方法
    1. 参考 (本人测试无效,可能是操作有误)
     项目在intellij idea里配置tomcat可以启动访问, 打成war包丢到tomcat webapps下能启动却访问不了相关的接口
        这个问题是因为idea会默认将项目以ROOT为目录的文件
        而丢到tomcat的webapps下面则是解压成你项目名称为目录的文件,和ROOT是同级的
        可以有以下几种解决方案
        一:将你的war名称改成作为ROOT.war
        二:在tomcat的server.xml文件的Host标签内配置<Context path="/" docBase="你项目的地址" reloadable="true"/>
        三:用tomcat发布时,将前端请求的路径加上你的项目名称
    2. tomcat 版本问题
    换成 tomcat 9.0xx,同样的步骤,访问成功
    tomcat 8.5xx,访问路径设置无效(可能是本人操作有误),访问时不能加项目名称
    可能原因:
        (1) Tomcat 9.0设计用于运行在Java se 8及以后的版本 -- 项目用的是jdk1.8,之前版本的 tomcat 不太支持 jdk1.8及以后版本的项目
        (2) 不同 tomcat 版本针对不同版本的 jdk 项目,需要进行特殊的配置(修改配置文件)
        (3) 打包方式问题,此项请看 后续
  • 总结
    从解决方法 1 看来,原因(1) 的可能性更大,本人对照了很多配置项,除了端口基本都属于默认配置,对网上较多的所谓解决方法的配置修改来看,都没有实际效果,而且启动均是正常,如果是访问路径设置的问题,总有一个访问路径是可以访问到的才对,不管是在tomcat中指定项目路径,还是在访问路径上加上项目名或者不加或者加上两个项目名都访问不到;所以,只能归咎到 tomcat 版本和 jdk 版本兼容的问题了。
  • 对 tomcat 8x 8.5x 和 9.0x 的各种发行可能没有详细了解,希望对遇到同样问题的你有帮助,如有不对或者疑问的地方,请大方指出,相互学习
  • springboot 指定 外部 tomcat 运行
  • Error:Cannot build artifact 'tube (1):war exploded' because it is included i
  • 后续
    1. 将 tomcat 整合进 idea,指定 tomcat 8.5xx 运行,正常运行,接口可访问
    2. 拿到 上面 打包好的 xx.war 复制到 tomcat 8.5xx 的 webapps 目录下,启动,接口可访问!!!且此处设置路径有效
    项目在intellij idea里配置tomcat可以启动并访问, 打成war包丢到tomcat webapps下能启动却访问不了相关的接口
     项目在intellij idea里配置tomcat可以启动并访问, 打成war包丢到tomcat webapps下能启动却访问不了相关的接口