Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案
即上篇通过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,所以将解决过程分享给大家,希望能帮助到小伙伴们~
将打好的war包拷贝到Tomcat的webapps目录,然后在Tomcat的bin目录找到startup.bat批处理文件,直接双击执行,结果运行几秒后直接闪退,顿时有种不好的预感,在浏览器访问web项目,结果连localhost:8080都无法访问,web项目未发布成功,一脸懵逼~
没有日志看不到为啥发布不成功额,想了想,可以稍微修改下startup.bat批处理文件,添加PAUSE,这样运行结束只有按任意键才会关掉窗口(调试成功,在去掉PAUSE)。
如果有错误信息,这时候会显示出来,可以再根据它的错误提示。

此时,发现显示了一些环境变量,是不是环境变量没有配置引起的报错呢,就去检查了下,发现没有配置JRE_HOME环境变量。配置后,发现还是闪退。

也不清楚时环境变量引起的还是什么原因,没辙了,只能再找度娘了。
经过查资料,关于Tomcat中startup.bat原理的相关内容,觉得很有帮助,摘取部分片段分享下,可能跟解决这个问题没关系,可略过~
startup.bat 解析

验证CATALINA_HOME 环境变量是否设置,如果没有设置则通过CATALINA_HOME/bin目录下查找catalina.bat文件来确定CATALINA_HOME环境变量是否有效,如果没有找到catalina.bat 则goto end,结束。

验证catalina.bat是否存在,如果不能存在则结束。

判断启动 startup.bat 是否有参数,如果有参数,如果有有则赋值给 CMD_LINE_ARGS变量。
通过call执行catalina.bat ,并传入参数。
其实startup.bat 的主要作用就是帮你找到catalina.bat并执行它。
好处:
如果你配置CATALINA_HOME的环境变量了,就可以把startup.bat 放到任何目录下,都可以启动tomcat了。
好了,根据对startup.bat文件的解析,发现现在的问题跟环境变量没关系。瞬间有点失落。经验告诉我,可以查看日志撒。发现日志存在错误日志额。

问题解决方法请参考:Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案
Tomcat其他问题总结:
问题一:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat,只要在setclasspath.bat的开头声明环境变量(红色两行)就可以了,原因是后来较新版本安装完不会自动登记环境变量JAVA_HOME,JRE_HOME。

这样在每次运行startup.bat时就自动注册了JAVA_HOME,JRE_HOME。
问题二:Cannot find "D:\Program Files\apache-tomcat-7.0.52\bin\setclasspath.bat"
可能是CATALINA_HOME的值在某个地方被写死了,像我的绿色版tomcat在bin文件下多了一个setenv.bat的文件,打开一看果然是在这里面被写死了CATALINA_HOME的路径,这应该是为了某种原因被人后加上的设置文件,把这个文件删除之后,tomcat可以正常运行了。

这种情况,可以去看catalina.bat中的配置,如下图,可能配置死的内容就在这个文件里。

Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案的更多相关文章
- idea将web项目打成war包放在tomcat/webapps上运行
1.进入Project Structure 或者 file -> Project Structure 或者 快捷键ctrl+alt+shift+s 2.选中Artifacts 3.点加号,然后如 ...
- 将web项目打成war包部署在tomcat步骤
将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...
- Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案
Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.proper ...
- 【转】将项目打成war包并用tomcat部署的方法,步骤及注意点
部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...
- 将项目打成war包并用tomcat部署的方法,步骤及注意点
部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...
- 如何使用idea把web项目打成war包
如果是maven项目,打成war包很容易,如果是web项目,需要这样子 1. 2. 3. output directory是war包的目录 4.重新选择 第一步的操作,选择build即可.
- idea把java web项目打成war包
1.新建artifacts 2.设置你的目录内容路径 3.找到项目web或webapp的路径 4.可以直接添加已经跑通的项目 5.配置完成点OK 6.编译打成war包 7.点击编译结束打完收工 8.找 ...
- IDEA将web项目打成war包
非Maven项目打包方式 按ctrl+滚动鼠标滚轮就能放大浏览器看图片了.或者将图片拖到新窗口打开. 然后点击OK,然后build一下.然后去classes文件夹下面找就能找到打成war包的项目 ...
- tomcat点击startup.bat出现闪退,启动不成功的解决办法
问题描述:tomcat点击startup.bat出现命令行闪退的情况 打开startup.bat,在第一行加入 SET JAVA_HOME=D:\jdk\jdk1.8.0_121[jdk路径] SET ...
随机推荐
- Knockout.js Style绑定
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- RabbitMQ---4、消息确认Ack
一:消费者确认 消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到 - 自动应答 boolean autoAck = true; channel.basicConsume(Q ...
- golang命令和VSCode配置
Go是一门全新的静态类型开发语言,具有自动垃圾回收.丰富的内置类型.函数多返回值.错误处理.匿名函数.并发编程.反射等特性 golang常用命令: go env #查看go的环境 echo %GORO ...
- 四、spark集群架构
spark集群架构官方文档:http://spark.apache.org/docs/latest/cluster-overview.html 集群架构 我们先看这张图 这张图把spark架构拆分成了 ...
- LeetCode GrayCode
class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ...
- BZOJ3625: 小朋友和二叉树
传送门 Sol 设 \(f_x\) 表示权值为 \(x\) 的二叉树的个数 设 \(s_x\) 表示是否有 \(x\) 这种权值可以选择 那么 \[f_n=\sum_{i=0}^{n}\sum_{j= ...
- php中http_build_query函数
http_build_query ( array $formdata [, string $numeric_prefix ] ) 使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求 ...
- Windows 批处理(cmd/bat)常用命令教程
Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...
- 一次spring aop 切面的问题
最新项目有个新需求,要在已经写好的controller里面 加上传入参数的验证,由于有多个 controller而且验证每个都要调用其他的服务,故决定采用spring的aop方式. 1.添加aop的验 ...
- 二、python小功能记录——监听鼠标事件
1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...