除了上面两个批处理,还有一个比较重要的脚本,即是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启动批处理——catalina.bat

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

  2. tomcat启动批处理——startup.bat

    从文件命名上看就知道这是一个启动批处理,这个批处理的主要功能就是为了找到另一个批处理catalina.bat,并且执行catalina.bat. 一开始就用if "%OS%" == ...

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

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

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

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

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

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

  6. tomcat开始批量——setclasspath.bat

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

  7. Java Tomcat 启动闪屏-原因之一---配置问题

    如Tomcat启动异常,首先确保Java安装和Tomcat安装版本是否对应,环境变量是否配置正确,如检查通过后,依然启动闪屏.可以依次解决: 1.在Tomcat启动文件Startup.bat之中最后添 ...

  8. Tomcat启动startup.bat闪退和JRE_HOME错误

    转载:http://blog.csdn.net/xushikuan/article/details/8132317 昨天学习Struts2,下载Tomcat7,太恶心了. 先是报个错,无法启动,基本意 ...

  9. tomcat启动startup.bat一闪而过 转

    遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:tomcat在启动时,会读取环境变量的信息,需要一个CATALIN ...

随机推荐

  1. [HNOI 2010]chorus 合唱队

    Description 题库链接 对于一个包含 \(N\) 个整数的数列 \(A\) ,我们可以把它的所有元素加入一个双头队列 \(B\) . 首先 \(A_1\) 作为队列的唯一元素,然后依次加入 ...

  2. [HNOI 2004]树的计数

    Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要 ...

  3. ●洛谷P2664 树上游戏

    题链: https://www.luogu.org/problemnew/show/P2664题解: 扫描线,线段树维护区间覆盖 https://www.luogu.org/blog/ZJ75211/ ...

  4. ●POJ 2828 Buy Tickets

    题链: http://poj.org/problem?id=2828 题解: 线段树. 逆向考虑这个过程.最后的序列S共有n个元素. 先看最后一个人,如果他插入到第i位,那么他最终的位置就是当前序列S ...

  5. 计蒜客NOIP2017提高组模拟赛(三)day2-数三角形

    传送门 这题有点坑啊 设A为两边颜色不同的角,B为两边颜色相同的角 那么考虑三种三角形:异色,同色,其他 对于任何一个异色三角形,一定会有三个颜色不同的角, 对于任何一个同色三角形,一定会有零个颜色不 ...

  6. 【bzoj4569 scoi2016】萌萌哒

    题目描述 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2,r2,即两个长度相同的区间,表示子串S ...

  7. SpringBoot学习之mvc

    Spring Boot非常适合Web应用程序开发. 我们可以使用嵌入式Tomcat,Jetty或Undertow轻松创建自包含的HTTP服务器. 大多数Web应用程序将使用spring-boot-st ...

  8. 为什么Unix只允许对非目录文件实行勾链?

    Unix文件系统的目录结构中带有交叉勾链,用户可以用不同的文件路径名共享一个文件,即文件的勾链在用户看来是为了一个已存在的文件另起一个路径名.在Unix的多级目录结构中勾链的结果表现为一个文件由多个目 ...

  9. c语言程序设计第四次作业——顺序结构

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  10. Elasticsearch 学习(二):安装和使用

    一.安装 安装 Elasticsearch 之前,需要先安装 Java,并配置好 Java 环境变量. 安装好 Java 环境后,进入 Elasticsearch 官网下载安装包. 解压安装包,进入解 ...