启动tomcat服务器,为何要配置CATALINA_HOME和JAVA_HOME ?

来源:互联网 发布:立体设计软件下载 编辑:程序博客网 时间:2024/06/12 22:22

问题 :win10系统,本地安装jdk,配置环境变量,是将jdk的bin目录,笔者本地目录为:E:\JavaTools\jdk1.8.0_131\bin

直接配置到系统变量path中,cmd执行java,javac都正常 , 认为jdk安装配置没有问题 。

本地安装tomcat , 在tomcat的bin目录下执行startup.bat执行运行tomcat服务器,闪退 !

窗口迅速关闭,并未看到错误信息 , 此时打开cmd,将tomat的bin目录下的startup.bat文件直接拖动到cmd中,回车执行,运行时看到报错信息 :


翻译一下:cataline_home环境变量未正确的定义,这个环境变量是运行这个程序所必需的。

好的,那么下一步配置cataline_home环境变量,类似jdk的java_home的配置 ,


配置的是tomcat的根目录,再次运行tomcat,还是闪退,类似第一次执行方式,看报错信息 :


翻译:既没有定义java_home环境变量,也未定义jre_home环境变量,运行此程序只是需要其中一个环境变量 ,

要配置java_home环境变量, 在配置jdk的时候我并没有配置java_home环境变量,而是直接将jdk的bin目录配置到系统变量中的path下,好的,现在配置下java_home环境变量,


配置完毕,至此我直接双击tomcat中bin目录下的startup.bat文件,运行tomcat,可以正确的运行


事后分析 : 运行tomcat,系统提示我配置了CATALINA_HOME和JAVA_HOME,为什么tomcat的运行需要配置CATALINA_HOME和JAVA_HOME? 为什么不是配置AAA_HOME , BB_HOME呢?

下面摘自某位作者的文章 :


用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALINA_HOME的值被设为Tomcat的安装目录。如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令。通过这段分析,我们了解到两个信息,一是Tomcat启动时,需要查找CATALINA_HOME这个环境变量,如果在Tomcat的bin目录下调用startup.bat,Tomcat会自动并正确设置CATALINA_HOME;二是执行startup.bat命令,实际上执行的是“catalina.bat start”命令。

有的读者可能会对Tomcat安装目录的环境变量的名字是CATALINA_HOME而感到奇怪,按照其他环境变量的设置来看,JAVA_HOME表示JDK的安装目录,那么应该用TOMCAT_HOME来表示Tomcat的安装目录,可为什么要使用CATALINA_HOME呢?实际上,在Tomcat 4以前,用的就是TOMCAT_HOME来表示Tomcat的安装目录,在Tomcat 4以后,采用了新的Servlet容器Catalina,所以环境变量的名字也改为了CATALINA_HOME

Windows系统下环境变量的名字是与大小写无关的,也就是说,JAVA_HOMEjava_home是一样的。

了解了startup.bat文件以后,我们再来看看真正负责启动Tomcat服务器的catalina.bat文件。通过分析catalina.bat文件,我们发现它还调用了一个文件setclasspath.bat。在setclasspath.bat文件中,它检查JAVA_HOME环境变量是否存在,并通过JAVA_HOME环境变量,找到java.exe,用于启动Tomcat。在这个文件中,还设置了其他的一些变量,代表调用Java的标准命令,有兴趣的读者可以自行分析一下这个文件。在执行完setclasspath.bat之后,catalina.bat剩下的部分就开始了Tomcat服务器的启动进程。

文章地址: http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html

阅读全文
0 0
原创粉丝点击