可能原因
近期更换新电脑,迁移环境时遇到Tomcat启动时黑屏闪退,考虑主要原因可能有以下几个
-
环境变量配置不对
-
Tomcat版本需要的JDK版本不对
-
Tomcat端口被占用
-
配置文件问题
解决方案
添加pause命令
在startup.bat文件最后添加pause命令,可以让命令窗口停留以便查看运行结果。
xxxxxxxxxx -- 查看服务器状态show status like '%lock%';-- 查看超时时间show variables like '%timeout%';SQL
如果显示如下
The JRE HOME environment variable is not defined correctly This environment variable is needed to run this program
需要检查环境变量配置和tomcat版本
环境变量配置不对
按windows + R 启用cmd命令, 进入命令提示符,输入“java -version”,回车,出现jdk版本,表示安装成功
Tomcat版本需要的JDK版本不对
Tomcat不同版本需要的JDK版本可能不同,对应关系可见下图
Tomcat版本 | JDK版本 |
---|---|
Tomcat 10.x | JDK 11 |
Tomcat 9.x | JDK 8-16 |
Tomcat 8.x | JDK 7-8 |
Tomcat 7.x | JDK 6-7 |
Tomcat 6.x | JDK 5-6 |
如果JDK版本与环境变量不一致,先安装相应版本的JDK,然后设置指定JDK启动
在tomcat安装路径的bin目录下的setclasspath.bat文件的开头加上以下代码
-
window
set JAVA_HOME=JDK安装路径 set JRE_HOME=%JAVA_HOME%\jre
-
Linux
export JAVA_HOME=JDK安装路径 export JRE_HOME=$JAVA_HOME/jre
Tomcat端口被占用
假设被占用的端口号是8804,命令窗口输入netstat -aon|findstr "8804"
回车,如下显示,最后一列就是PID
TCP 0.0.0.0:8804 0.0.0.0:0 LISTENING 27644 TCP [::]:8804 [::]:0 LISTENING 27644
查看具体是哪个进程或程序,tasklist|findstr "27644"
,显示如下,可知是java.exe
java.exe 27644 Console 1 124,668 K
要结束该进程,可以使用命令 taskkill /f /t /pid 27644
或者修改要启动的tomcat端口号,找到tomcat安装目录下的conf
文件夹中的server.xml
文件,找到protocol值为HTTP/1.1的Connector标签,其中port就是端口号。
配置文件问题
查看catalina log日志,获取报错信息
-
检查配置文件是否按照规范编写
-
tomcat内存配置是否有误
-
配置文件中是否有中文但文件非UTF-8编码