前言
用了那么久的tomcat,今天却在war包部署tomcat,启动tomcat,访问项目这么一个常规而又傻瓜的流程中,对tomcat抛出的异常一知半解,只见异常是这样的:
1 | org.apache.jasper.compiler.JDTCompiler$1 findType |
大概可以看出,jsp编译java代码的时候,编译出错啦,编译文件的格式有问题。喔~突然想到java代码一般是在打包的时候就编译成class文件,但是jsp里的java代码好像没有,那估计是jsp的java代码是在服务器运用到的时候才去进行编译的。
本文结构:
- tomcat的基本启动逻辑
- tomcat不常用但应该知道的操作
运行环境:
- Tomcat 6.0.26
- win10专业版
基本启动逻辑
既然jsp的java代码是在服务器运用到的时候才去进行编译的,这也就意味着这时候tomcat将会应用它所指定的jdk,我们都知道,tomcat的版本和jdk的版本是有关联关系的。好的,明白了逻辑,我们来看看tomcat的启动逻辑:
tomcat在不同的操作系统的启动文件都是startup,进入文件后我们可以看到,tomcat的路径CATALINA_HOME和jdk的路径JAVA_HOME/JRE_HOME都是在这里面寻找以及赋值的,而且startup里主要执行了两个文件,catalina和setclasspath,查看逻辑可以得知,tomcat默认查找的就是环境变量的JAVA_HOME。
知道了tomcat的启动逻辑,那我们只要在启动的任何一个相关文件里指定JAVA_HOME,就可以配置指定的JDK啦。如:
1 | set JAVA_HOME={here is your own jdk path} |
这里要注意,参数名称和值,与等号之间不能有空格,否则将配置失败
好了,配置好指定的jdk后,还要确认一下tomcat的运行环境,可以在%CATALINA_HOME%/bin底下,执行version,看到的结果大致是:
1 | version |
查看到JDK的版本和路径都正确了,就大功告成了~
不常用但应该知道的操作
version
在配置完jdk等等运行环境之后,可以通过该命令查看整个运行环境,避免配置失败。
service
如果直接执行tomcat的安装版,我们往往可以看到tomcat在windows系统里会直接创建一个apache tomcat的服务,而我们也可以直接在服务里进行启动,以及设置自动启动,避免了运行程序在前台容易被其他用户误关闭。
而如果是使用tomcat的解压版的话,其实tomcat也提供了快捷的创建windows服务的操作:
1 | service install {here is your custom defined serverName} |
要注意的是:windows下,必须用“管理员身份”打开cmd命令窗口,才可以执行上述操作,否则会出现安装失败的情况。
同样,在创建服务之前,若要指定JDK,也需要到service文件里进行配置。