Apache Tomcat 9.0.82示例应用无法启动求助
问题描述
尝试使用apache-tomcat-9.0.82和Java 8运行Tomcat示例Web应用,已将sample.war放入指定文件夹,以管理员权限在PowerShell执行启动命令:
PS C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\bin> .\startup.bat Using CATALINA_BASE: "C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\webapps" Using CATALINA_HOME: "C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82" Using CATALINA_TMPDIR: "C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\webapps\temp" Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_161" Using CLASSPATH: "C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\bin\bootstrap.jar;C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\bin\tomcat-juli.jar" Using CATALINA_OPTS: ""
控制台窗口打开半秒后关闭,且C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\logs目录为空,8080端口无进程占用:
PS C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\bin> netstat -ano | findstr :8080 PS C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82\bin>
问题根源
从启动输出可见,CATALINA_BASE被错误设置为webapps目录,这违背了Tomcat的目录结构规范:CATALINA_BASE应指向Tomcat的根目录(与CATALINA_HOME一致,或自定义的独立目录),而非webapps。这种错误会导致Tomcat无法正确初始化日志、临时文件等核心目录,进而启动失败且无日志输出。
解决步骤
修正CATALINA_BASE环境变量
打开系统属性 → 高级 → 环境变量,检查是否存在CATALINA_BASE变量。若存在,将其值修改为Tomcat根目录(即C:\apache-tomcat-9.0.82\apache-tomcat-9.0.82),或直接删除该变量(Tomcat会默认使用CATALINA_HOME作为CATALINA_BASE)。使用catalina.bat直接启动查看错误
在PowerShell中执行以下命令,窗口不会自动关闭,可直接查看启动失败的具体错误信息:.\catalina.bat run验证目录权限
确保Tomcat根目录拥有写入权限,让Tomcat能自动创建logs、temp等必要目录(修正CATALINA_BASE后会自动使用根目录下的temp)。确认Java环境配置
Tomcat 9与Java 8兼容,当前JRE_HOME设置正确。若仍有问题,可检查是否配置了JAVA_HOME环境变量,确保指向JDK根目录(C:\Program Files\Java\jdk1.8.0_161)。
内容的提问来源于stack exchange,提问作者IDK

