除了上述两批,另一个重要的脚本,那是,setclasspath.bat。它主要负责查找、检查JAVA_HOME和JRE_HOME两个变量。

********************************************************************************************

if ""%1"" ==""debug"" goto needJavaHome

if not "%JRE_HOME%" == "" gotogotJreHome

if not "%JAVA_HOME%" == "" gotogotJavaHome

goto exit

:needJavaHome

if "%JAVA_HOME%" == "" gotonoJavaHome

if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

if not exist "%JAVA_HOME%\bin\javaw.exe"goto noJavaHome

if not exist "%JAVA_HOME%\bin\jdb.exe" gotonoJavaHome

if not exist "%JAVA_HOME%\bin\javac.exe"goto noJavaHome

set "JRE_HOME=%JAVA_HOME%"

goto okJava

:noJavaHome

goto exit

:gotJavaHome

set "JRE_HOME=%JAVA_HOME%"

:gotJreHome

if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome

if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome

goto okJava

:noJreHome

goto exit

:okJava

if not "%JAVA_ENDORSED_DIRS%" == ""goto gotEndorseddir

set"JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"

:gotEndorseddir

set _RUNJAVA="%JRE_HOME%\bin\java"

set _RUNJDB="%JAVA_HOME%\bin\jdb"

goto end

:exit

exit /b 1

:end

exit /b 0

********************************************************************************************

推断是否在debug模式下, 此模式下必需要设置JAVA_HOME环境变量,即跳到needJavaHome位置。

接着分别推断JRE_HOME、JAVA_HOME两个环境变量,不为空则分别跳到gotJreHome、gotJavaHome位置。

needJavaHome做的事情包含检查JAVA_HOME环境变量是否为空,不为空的话它的bin文件夹下是否存在java.exe、javaw.exe、jdb.exe、javac.exe等文件,这些文件都是执行时必要的执行文件,最后把JAVA_HOME变量的值赋给JRE_HOME。这里有必要说明一下exit标签跟end标签的不同。exit 
/b  1 即退出当前命令窗体并返回值1。exit /b  0 则是退出当前命令窗体并返回0,0表示在这段脚本执行中没有出现错误。所以假设一切执行正常的话,终于会得到JAVA_ENDORSED_DIRS="%CATALINA_HOME%\endorsed",_RUNJAVA="%JRE_HOME%\bin\java",_RUNJDB="%JAVA_HOME%\bin\jdb"。

喜欢研究java的同学能够交个朋友。以下是本人的微信号:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

tomcat开始批量——setclasspath.bat的更多相关文章

  1. tomcat启动批处理——setclasspath.bat

    除了上面两个批处理,还有一个比较重要的脚本,即是setclasspath.bat,它主要负责寻找.检查JAVA_HOME和JRE_HOME两个变量. ************************* ...

  2. [Tomcat 源码分析系列] (二) : Tomcat 启动脚本-catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 ca ...

  3. [Tomcat 源码分析系列] (一) : Tomcat 启动脚本-startup.bat

    概述 我们通常使用 Tomcat 中的 startup.bat 来启动 Tomcat. 但是这其中干了一些什么事呢? 大家都知道一个 Java 程序需要启动的话, 肯定需要 main 方法, 那么这个 ...

  4. tomcat启动批处理——catalina.bat

    这个批处理才是tomcat服务器启动跟关闭的核心脚本.其中包括....(各种变量),此节将详细讲解这个批处理的逻辑. 先看看第一部分脚本: ****************************** ...

  5. tomcat启动(一)startup.bat|catalina.bat分析

    环境:windows X64位 Tomcat8.0.47 bootstrap.jar是tomcat的内核 开始位置 startup.bat 查看文本 具体的批处理脚本语法可以查看我整理的文章 http ...

  6. Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案

    即上篇通过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,所以将解决过程分享给大家,希望能帮助到小伙伴们~ 将打好的war包拷贝到Tomcat的w ...

  7. myeclipse能启动tomcat但是用startup.bat无法启动

    myeclipse能启动tomcat但是用startup.bat无法启动 这个问题困扰了我一天,把一天的周末时间白白花费了.各种百度,各种尝试都没办法解决.在江湖上闯,难道就只有百度一招吗? 不是,我 ...

  8. windows 同时启动多个Tomcat 控制台日志(startup.bat)输出到指定文件中

    1 .修改startup.bat第42行 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 为 call "%EXECUTABLE%&q ...

  9. tomcat点击startup.bat出现闪退,启动不成功的解决办法

    问题描述:tomcat点击startup.bat出现命令行闪退的情况 打开startup.bat,在第一行加入 SET JAVA_HOME=D:\jdk\jdk1.8.0_121[jdk路径] SET ...

随机推荐

  1. python发送post和get请求

    python发送post和get请求 get请求: 使用get方式时,请求数据直接放在url中. 方法一. import urllib import urllib2 url = "http: ...

  2. 也谈C#之Json,从Json字符串到类代码

    原文:也谈C#之Json,从Json字符串到类代码  阅读目录 json转类对象 逆思考 从json字符串自动生成C#类  json转类对象 自从.net 4.0开始,微软提供了一整套的针对json进 ...

  3. vs2012 不显示最近项目

    visual studio起始页不显示最近使用项目的解决办法方法一 1.开始 → 运行 → 输入 regedit 回车,打开注册表编辑器. 2.定位到 HKEY_CURRENT_USER/Softwa ...

  4. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

    五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整 ...

  5. c/c++ 直接使用动态库 dlopen

    c/c++ 直接使用动态库 dlopen 把各个版本编译成动态库,××.so ,提供统一的接口进行调用.这里使用的工具是dlxx系列函数 dlopen  void *dlopen(const char ...

  6. ARP欺骗,骗你没商量

    今天BOSS让我总结ARP欺骗的原理和防范策略,在这里把总结的结果贴出来吧.求人品,求速转正. ARP原理: 在局域网内部,各主机之间以MAC地址作为标识通信对象的标志.然而,有时通信发起的主机并不知 ...

  7. Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g

    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g 系统环境: 操作系统: RedHat EL6 Oracle:  Oracle 10g and Oracle 11 ...

  8. web服务器配置方法

    Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏 ...

  9. Python语法

  10. 产生n不同随机数的算法

    昨天无聊,就模仿仙剑5外传中的卡牌游戏做了一个小游戏,结果在开发这个小游戏的时候,碰到了产生多个不同随机数的问题.我们知道,仙剑中的卡牌游戏是随机产生16张图片,并且这16张图片是两个一组的,因为只有 ...