tomcat学习(一)startup.bat 与shutdown.bat

本文详细介绍了在Win7系统上配置Tomcat 7.0.23的步骤,包括环境变量设置、startup.bat批处理文件解析等内容,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习 张孝祥老师的Tomcat 视频, 算是后知后觉了吧,为了以后复习巩固,我把一些要点记下来。

操作系统:win7 旗舰版 64位

Tomcat 版本:apache-tomcat-7.0.23-windows-x64.zip (直接加压使用)

Tomcat 解压目录:D:\tomcat-7.0.23(“Tomcat 解压目录”  根据具体情况改变 )

一、 设置Tomcat 运行环境

Tomcat 运行需要设置JAVA_HOME 环境变量

JAVA_HOME 变量的设置方式有两种:

方法1.    在“计算机”  ——  右键点击  “属性”  —— 点击 “高级系统变量” ——  在 “高级”选项卡下  ——  点击“ 环境变量”   ——  在“系统变量”   下点击“新建” 按钮

输入“变量名” :JAVA_HOME

输入变量值:D:\jdk1.7.0_01 (这是我的JDK的安装目录)

然后一直点击确定按钮

方法2.    找到 D:\tomcat-7.0.23\bin  目录 下的  startup.bat  批处理文件,用文本方式打开

在第一行代码后面添加代码  set JAVA_HOME=D:\jdk1.7.0_01

如下:

@echo offset JAVA_HOME=D:\jdk1.7.0_01

二、环境变量测试:

运行cmd 下转到  D:\tomcat-7.0.23\bin   目录下运行  startup.bat


Tomcat 会弹出一个新的运行框,显示巴拉巴拉一堆运行状态回显,如果回显文字信息中没有错误和警告,说明 Tomcat  启动加载已经OK

浏览器运行:http://localhost:8080/   弹出漂亮的 Tomcat  主页面 说明Tomcat 运行成功

三、 startup.bat  批处理文件详解

提示:我是在cmd中,转到  D:\tomcat-7.0.23\bin  目录下运行 startup.bat ,所以我的当前工作目录为:D:\tomcat-7.0.23\bin ,以此目录为例进行详解

Tomcat 解压目录:D:\tomcat-7.0.23

[javascript]  view plain copy
  1. @echo off                   //此行命令效果:只显示下列命令执行结果,不显示命令本身  
[javascript]  view plain copy
  1. if "%OS%" == "Windows_NT" setlocal      //如果本机OS是windows_NT 则设置本机环境变量  
[javascript]  view plain copy
  1. rem Guess CATALINA_HOME if not defined      //为注释代码:判断 CATALINA_HOME 环境变量是否已经配置  
  2. set "CURRENT_DIR=%cd%"              //设置CURRENT_DIR 变量(当前工作目录)为:D:\tomcat-7.0.23\bin    
  3. if not "%CATALINA_HOME%" == "" goto gotHome //如果配置了 CATALINA_HOME 环境变量跳转执行 gotHome  
[javascript]  view plain copy
  1. set "CATALINA_HOME=%CURRENT_DIR%"            //如果没有设置,则设置 CATALINA_HOME 变量为:D:\tomcat-7.0.23\bin    
  2. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //查看"当前工作目录\bin" 目录(即D:\tomcat-7.0.23\bin\bin)下是否存在catalina.bat 文件,如存在跳转okHome  
  3. cd ..                   //回到上级子目录,即:D:\tomcat-7.0.23 ,此时当前工作目录已经更改为:D:\tomcat-7.0.23  
  4. set "CATALINA_HOME=%cd%"        // 更改 CATALINA_HOME 变量值为:D:\tomcat-7.0.23  
  5. cd "%CURRENT_DIR%"          //切换至当前工作目录:D:\tomcat-7.0.23  

 

[javascript]  view plain copy
  1. :gotHome  
  2. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome         //如果找得到 catalina.bat 批处理文件,则跳转okHome  
[javascript]  view plain copy
  1. echo The CATALINA_HOME environment variable is not defined correctly    //找不到catalina.bat文件,显示错误信息,然后结束  
  2. echo This environment variable is needed to run this program        //在cmd执行startup.bat的当前目录不为:“tomcat解压目录”和“tomcat解压目录\bin”时会提示此错误信息  
[javascript]  view plain copy
  1. goto end  
[javascript]  view plain copy
  1. //由此可见 catalina.bat 才是真正的执行 Tomcat 启动和关闭的批处理程序  
[javascript]  view plain copy
  1. //在执行startup.bat时,如果startup.bat 文件不在 ”Tomcat解压目录“或者“Tomcat解压目录\bin” 目录下  
[javascript]  view plain copy
  1. //才会提示CATALINA_HOME 错误信息    
[javascript]  view plain copy
  1. :okHome  
  2. set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"   //至此catalina.bat文件已经确定存在了,现在设置 EXECUTABLE (执行文件)环境变量  
[javascript]  view plain copy
  1. rem Check that target executable exists  
[javascript]  view plain copy
  1. if exist "%EXECUTABLE%" goto okExec          //如果EXECUTABLE 变量已经设置成功,跳转okExec执行  
[javascript]  view plain copy
  1. echo Cannot find "%EXECUTABLE%"                //否则提示找不到catalina.bat 执行文件  
[javascript]  view plain copy
  1. echo This file is needed to run this program  
  2. goto end  
[javascript]  view plain copy
  1. :okExec  
  2. rem Get remaining unshifted command line arguments and save them in the  
  3. set CMD_LINE_ARGS=                   //清除CMD_LINE_ARGS环境变量原来的值  
[javascript]  view plain copy
  1. :setArgs  
  2. if ""%1""=="""" goto doneSetArgs         //如果第二个参数为空跳转doneSetArgs,即已经接完了传入的参数    
[javascript]  view plain copy
  1. set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1         //给 CMD_LINE_ARGS 添加参数,并以空格隔开  
[javascript]  view plain copy
  1. shift                                    //截掉第一个参数,使第二个参数变为第一个参数  
[javascript]  view plain copy
  1. goto setArgs  
[javascript]  view plain copy
  1. //  以上5行代码的作用就是将所有参数用空格间隔开,并赋值CMD_LINE_ARGS  
[javascript]  view plain copy
  1. :doneSetArgs  
  2. call "%EXECUTABLE%" start %CMD_LINE_ARGS%   //打开新窗口,执行 EXECUTABLE 环境变量所代表的catalina.bat 批处理文件与 CMD_LINE_ARGS 代表的参数  
[javascript]  view plain copy
  1. :end                        //结束  


 

总结:

1.    startup.bat 的作用主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件

2.   shutdown.bat 文件与 startup.bat 文件的内容只有一点不同,即倒数第二行代码,通过修改执行参数 start  为stop  并交由catalina.bat 执行实现Tomcat 的关闭功能

补充:

1.   rem

代码前面有 rem :所修饰的代码是注释说明文字

2.   @

代码前面有  @  :所修饰的代码执行时,只显示执行结果,不显示命令本身


Tomcat的`startup.bat`文件在运行时闪退是个常见的问题,通常由环境配置不当、路径错误或日志信息未正确输出等原因造成。以下是对此问题的原因分析及解决方案: ### 原因分析 1. **环境变量配置不正确**:如果系统没有正确设置`JAVA_HOME`和`TOMCAT_HOME`,可能导致Tomcat无法找到Java运行时或自身的安装目录,从而引发启动失败。 2. **项目部署问题**:当`webapps`目录中存在损坏或不兼容的`war`包时,Tomcat可能在尝试加载这些文件时崩溃。 3. **日志信息缺失**:某些情况下,`logs`目录下的日志文件为空,导致难以直接定位问题所在[^1]。 4. **批处理脚本执行过快**:由于`startup.bat`执行时间非常短,即使出现错误提示也会闪而过,无法查看具体的报错信息。 ### 解决方案 1. **手动设置环境变量** 在`startup.bat`和`shutdown.bat`文件的开头添加以下两行代码,确保指定正确的JDK和Tomcat路径: ```bat SET JAVA_HOME=D:\Java\jdk1.6.0_10 SET TOMCAT_HOME=E:\tomcat-6.0.35 ``` 这种方式可以强制Tomcat使用特定版本的Java和自身的安装目录,避免因全局环境变量配置错误而导致的问题[^1]。 2. **检查并清理`webapps`目录** 将有问题的`war`包移除或者修复后重新部署到`webapps`目录下,以防止Tomcat在启动过程中加载异常项目导致崩溃。 3. **查看日志文件** 如果`logs`目录中的日志文件为空,可以通过修改`startup.bat`文件,在其末尾添加`pause`命令来暂停窗口,以便查看控制台输出的信息: ```bat :end pause ``` 此外,也可以通过命令行工具(如CMD或PowerShell)运行`startup.bat`,这样即使窗口关闭也能看到部分错误信息: ```powershell PS D:\program\apache-tomcat-9.0.98\bin> .\startup.bat ``` 通过这种方式,能够更清晰地了解启动过程中的具体错误[^2]。 4. **调试排查** 如果上述方法仍无法解决问题,建议打开`logs`目录下的详细日志文件,查找具体的错误堆栈信息。般而言,日志中会记录导致启动失败的关键原因,例如找不到某个项目或类文件等。根据这些信息进行针对性修复,即可解决大部分启动问题。 --- ### 示例:修改`startup.bat`文件内容 ```bat @echo off SET JAVA_HOME=D:\Java\jdk1.6.0_10 SET TOMCAT_HOME=E:\tomcat-6.0.35 rem --------------------------------------------------------------------------- rem Start script for the CATALINA Server rem ... :end pause ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值