Tomcat启动一闪而过就消失的原因及解决方法

引言:Tomcat启动一闪而过怎么办?

这成为了许多刚接触tomcat开发环境工作者的一个大问题,许多用户朋友都不知道是因为什么问题导致出现这种情况,下面就一起来了解一下吧。

原因一:

 (1)首先要搞明白启动不起来的原因。方法是在命令行下,运行startup.bat文件,这样程序就不会一闪而过,而会将启动不起来的原因打印到窗口上。

(2)在命令行下启动tomcat的方法读者应该都很清楚,大体就是:cmd启动命令行窗口→通过cd命令到tomcat的bin目录下→运行startup.bat。

(3)通过命令行的提示看到,这是因为电脑上没有配置JAVA_HOME或者JRE_HOME导致的。那么下面添加上JAVA_HOME和JRE_HOME。具体步骤为计算机→属性→环境变量,然后添加系统变量;

(4)添加完JAVA_HOME和JRE_HOME两个系统变量之后,在将这两个变量放到path系统变量中,方法是,在path变量值的后面直接追加 【;%JAVA_HOME%;%JRE_HOME%】注意!分号是环境变量的分割符号,不可少。

原因二:

双击tomcat的bin目录下的startup.bat时一闪而过时,可以右键startup.bat找一个文本编辑器打开,然后在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口会留在桌面上(调试成功,把pause去掉即可)。我们可以看到DOS窗口里有错误信息。

1. The JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program 原因:以前版本的tomcat需要JDK,现在的tomcat(本人的是7.0)只要有JRE就可以。 如果你装的tomcat的是解压版的(免安装的)那么则需要自己手动配置JRE_HOME 这个环境变量,否则,就会出现上面的错误。 解决办法:右击 我的电脑 - 高级 - 环境变量, 在系统变量中 新建 变量名:JRE_HOME 变量值:C:\Program Files\Java\jre7(根据你自己的JDK安装目录寻找JRE)

2.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。
给setclasspath.bat的开头添加红色标记部分,如下: rem ___________________________ rem Set CLASSPATH and Java options rem rem rem ____________________________ 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 大功告成。

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

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

原因三:

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

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

        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 [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]

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

原文链接:https://blog.csdn.net/qq904069486/article/details/80909780

猜你喜欢

转载自blog.csdn.net/weixin_42110638/article/details/85394056