前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tomcat启动startup.bat一闪而过就消失的原因和解决方法[通俗易懂]

Tomcat启动startup.bat一闪而过就消失的原因和解决方法[通俗易懂]

作者头像
Java架构师必看
发布2022-05-10 13:49:34
6.3K0
发布2022-05-10 13:49:34
举报
文章被收录于专栏:Java架构师必看

Tomcat启动startup.bat一闪而过就消失的原因和解决方法通俗易懂遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:进入tomcat的安装目录(即解压后放置的地方):看到圈出红色的3个bat文件,一般通过startup.bat启动tomcat时流程是:startup->catalina->setclasspath->catalina如果这3个bat文件里...

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Tomcat启动startup.bat一闪而过就消失的原因和解决方法[通俗易懂],希望能够帮助大家进步!!!

遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:

进入tomcat的安装目录(即解压后放置的地方):

看到圈出红色的3个bat文件,一般通过startup.bat启动tomcat时流程是:

startup->catalina->setclasspath->catalina

如果这3个bat文件里面有一个出现错误的话就是启动失败。为了找到一闪而过的原因得需要我们来看看这3个文件里面到底是什么了

原因一:

tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME 与JAVA_HOME的信息,CATALINA_HOME即tomcat的主目录,JAVA_HOME即java安装的主目录,jdk的主目录。

首先,要在环境变量处,配置JAVA_HOME,注意变量值是jdk的主目录,不是bin目录,并且不要加分号,如图:

解决办法:

检查JDK的环境变量是否配置正确

原因二:

如果这样配置,startup.bat还是一闪而过,可以右键点击startup.bat,编辑,在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口不会再一闪而过,而是停留在桌面上(调试成功,把pause去掉即可)。

再次执行startup.bat,出现下图-- 窗口不会闪退 但是出现请按任意键继续的情况

当我们按任意键继续后,窗口依然一闪而过,但是此时能够确定我们所配置的环境变量是正确

如果有错误信息,这时候会显示出来,可以再根据它的错误提示,上网搜索对应的解决办法,下面是在错误提示窗口遇到过的问题:

一、 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。

代码语言:javascript
复制
rem ---------------------------------------------------------------------------
rem Set CLASSPATH and Java options
rem
rem $Id: setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $
rem ---------------------------------------------------------------------------

-- 此处JDK路径是否正确
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20
set JRE_HOME=C:\Program Files\Java\jre6

rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit

只听到从架构师办公室传来架构君的声音:

车辚辚,马萧萧,行人弓箭各在腰。有谁来对上联或下联?

这样在每次运行startup.bat时就自动注册了JAVA_HOME,JRE_HOME。

运行startup.bat,提示“信息:Server startup in xxxxx ms” OK 大功告成。

二、Cannot find ““d:\apache-tomcat-6.0.32”\bin\setclasspath.bat”

这个时候,可能是CATALINA_HOME的值在某个地方被写死了,像我的绿色版tomcat在bin文件下多了一个setenv.bat的文件,打开一看果然是在这里面被写死了CATALINA_HOME的路径,这应该是为了某种原因被人后加上的设置文件,把这个文件删除之后,tomcat可以正常运行了。

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

原因三:

如果你的环境配置没有错,也没有上述两种错误那么可能你已经启动了一个Tomcat,这样两个Tomcat会产生冲突。你可以在com中查看8080是否被占用:

(1)我们可以使用如下命令来找出哪个进程占用5037这个端口

代码语言:javascript
复制
此代码由Java架构师必看网-架构君整理
    netstat -ano | findstr "5037"

(2)最后一列为占用5037端口的进程号,PID为9060,那么我们可以在任务管理器里查看改进程号所对应的进程,直接右击结束该进程即可。或者使用上面提到的taskkill命令,它主要是用来批量删除某些进程,当然,也可以用来删除一个进程,使用方法如下:

taskkill /PID 9060 /F 其中,/F主要是用来强制删除。

你也可以查看Tomcat自带的打印日志在你的Tomcat的logs文件夹下如果出现了

七月 04, 2018 10:40:20 上午 org.apache.catalina.core.StandardService initInternal

严重: Failed to initialize connector [ConnectorHTTP/1.1-8080]

org.apache.catalina.LifecycleException: Failed to initialize component [ConnectorHTTP/1.1-8080]

类似的错误可能已经运行了一个Tomcat你可以在服务中把它终止掉,然后再运行自己的Tomcat就可以了。

转载:https://blog.csdn.net/qq904069486/article/details/80909780

转载:https://blog.csdn.net/znn626/article/details/7893555

感谢:网友StrongerXT的最终方案

当你各种方法都不行时,尝试重装Tomcat不失为一种好方法

让我想到电脑出问题:

重启解决90%的问题 重装系统解决99% 剩下1%就是硬件问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-052,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类似的错误可能已经运行了一个Tomcat你可以在服务中把它终止掉,然后再运行自己的Tomcat就可以了。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档