即上篇通过将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直接闪退部署失败解决方案的更多相关文章

  1. idea将web项目打成war包放在tomcat/webapps上运行

    1.进入Project Structure 或者 file -> Project Structure 或者 快捷键ctrl+alt+shift+s 2.选中Artifacts 3.点加号,然后如 ...

  2. 将web项目打成war包部署在tomcat步骤

    将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...

  3. Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案

    Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.proper ...

  4. 【转】将项目打成war包并用tomcat部署的方法,步骤及注意点

    部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...

  5. 将项目打成war包并用tomcat部署的方法,步骤及注意点

    部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...

  6. 如何使用idea把web项目打成war包

    如果是maven项目,打成war包很容易,如果是web项目,需要这样子 1. 2. 3. output directory是war包的目录 4.重新选择 第一步的操作,选择build即可.

  7. idea把java web项目打成war包

    1.新建artifacts 2.设置你的目录内容路径 3.找到项目web或webapp的路径 4.可以直接添加已经跑通的项目 5.配置完成点OK 6.编译打成war包 7.点击编译结束打完收工 8.找 ...

  8. IDEA将web项目打成war包

    非Maven项目打包方式    按ctrl+滚动鼠标滚轮就能放大浏览器看图片了.或者将图片拖到新窗口打开. 然后点击OK,然后build一下.然后去classes文件夹下面找就能找到打成war包的项目 ...

  9. tomcat点击startup.bat出现闪退,启动不成功的解决办法

    问题描述:tomcat点击startup.bat出现命令行闪退的情况 打开startup.bat,在第一行加入 SET JAVA_HOME=D:\jdk\jdk1.8.0_121[jdk路径] SET ...

随机推荐

  1. Knockout.js Style绑定

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  2. RabbitMQ---4、消息确认Ack

    一:消费者确认 消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到 - 自动应答 boolean autoAck = true; channel.basicConsume(Q ...

  3. golang命令和VSCode配置

    Go是一门全新的静态类型开发语言,具有自动垃圾回收.丰富的内置类型.函数多返回值.错误处理.匿名函数.并发编程.反射等特性 golang常用命令: go env #查看go的环境 echo %GORO ...

  4. 四、spark集群架构

    spark集群架构官方文档:http://spark.apache.org/docs/latest/cluster-overview.html 集群架构 我们先看这张图 这张图把spark架构拆分成了 ...

  5. LeetCode GrayCode

    class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ...

  6. BZOJ3625: 小朋友和二叉树

    传送门 Sol 设 \(f_x\) 表示权值为 \(x\) 的二叉树的个数 设 \(s_x\) 表示是否有 \(x\) 这种权值可以选择 那么 \[f_n=\sum_{i=0}^{n}\sum_{j= ...

  7. php中http_build_query函数

    http_build_query ( array $formdata [, string $numeric_prefix ] ) 使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求 ...

  8. Windows 批处理(cmd/bat)常用命令教程

    Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...

  9. 一次spring aop 切面的问题

    最新项目有个新需求,要在已经写好的controller里面 加上传入参数的验证,由于有多个 controller而且验证每个都要调用其他的服务,故决定采用spring的aop方式. 1.添加aop的验 ...

  10. 二、python小功能记录——监听鼠标事件

    1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...