maven项目在idea中能够运行,放在本地tomcat中运行失败

 

最近在将一个maven项目打包放在公司服务器上运行之前,我先将打好的 war 包放在我自己电脑上的tomcat上看看是否能正常运行。

结果这一试就出了问题了,在自己电脑的 tomcat 上就是部署失败,tomcat 启动时会报错,错误信息好像是什么 c3p0 的一个错误,奇怪的是我在 idea 上运行就是正常的,两种方式都是正常的

maven项目在idea中能够运行,放在本地tomcat中运行失败_第1张图片

这就奇了怪了,:war 包的方式不就是 idea 将项目打成 war 放在你自己的 tomcat 中运行的么,为什么我自己将 war 包放到tomcat 中,然后手动启动 tomcat 会报错?

百度搜了半天也没找到解决方法,针对启动报的错也没搜到相关问题,然后我尝试将 tomcat 中 webapps 文件夹下自己的项目都清空,单独启动 tomcat,结果发现启动失败,错误就是之前的那个错误。

心想这是 tomcat 出问题了?不能啊,那用 idea 启动就好好的,最后不停的试验终于是发现了问题所在:

应该是我之前有一次这样部署项目,在红框处只有个 / 没有填其他的,这时启动项目时 idea 会将 war 解压到你本地 tomcat 中 webapps 下的 ROOT 目录下,然而这一次的程序是有问题的,解压到 ROOT 目录下的是有错误的项目

然后我后面启动都在 / 后面加了路径,就没有出现问题,手动启动 tomcat 就报错,猜想可能是这里的问题,然后我就把 ROOT 目录给删掉了,问题解决,浪费了我好几个小时。。。

maven项目在idea中能够运行,放在本地tomcat中运行失败_第2张图片

 

补充一下 :war 和 :war exploded 的区别:

war模式:将WEB工程以包的形式上传到服务器 ;

war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

开发中一般是使用 war exploded 模式 ,这种模式支持热部署,使用 debug 启动项目,鼠标失去焦点修改就能立即生效

当然如果是 spring boot 项目热部署,添加 spring-boot-devtool 这个依赖,然后 idea 中设置一下就可以了。

 

 

 

 

 

你可能感兴趣的:(Java后端,java,maven,tomcat)