一,前言
我们都知道,Tomcat启动前需要配置JDK环境变量,如果没有配置JDK的环境变量,那么tomcat启动的时候就会报错,也就是无法启动。
但是在我们的工作或者学习过程中,有的时候会出现tomcat需要使用不同的JDK版本。
这个时候要怎么办呢?似乎唯一的办法就是在使用不同版本的JDK的时候,去更改环境变量中的JAVA_HOME变量。
这样做也确实可行,但是频繁的更改JAVA_HOME变量,不仅操作起来略显繁琐,每一次都要改来改去的,而且假如使用结束后忘记将JAVA_HOME改回来,那么将会造成一系列的不可预料的问题,例如eclipse启动不了了。
那么有没有一种方法可以在不更改环境变量的情况下,让tomcat使用我们指定的JDK呢?
答案是:有。
只要在tomcat中添加相关配置即可,在公布答案之前我们先思考一下,为什么tomcat启动需要JDK或者是JRE?
因为tomcat启动的时候需要运行在java虚拟机(JVM)中,或者说要启动一个虚拟机进程,再简单一些就是我们的代码需要JVM来执行,自然需要启动一个JVM。
其实eclipse启动的时候也同样启动了一个JVM进程,在windows的任务管理器中我们可以看到:
因为我现在的电脑上正在运行一个eclipse所以这里有一个Java虚拟机进程。
那么如何让tomcat使用指定的JDK呢?首先来看一下不让tomcat使用指定JDK,即使用电脑的环境变量中配置的JDK的时候是什么样的。
二,tomcat使用默认环境变量中的JDK配置
看一下环境变量中我们配置的JDK版本:打开命令行窗口->输入 java -version->回车
可以看到,我的电脑上环境变量中配置的是JDK10。
启动tomcat(我使用的tomcat版本是:Apache-tomcat-7.0.85):进入bin目录双击startup.bat。
打开浏览器,访问localhost:8080,可以看到tomcat的默认欢迎页
那么到底tomcat启动是时候是不是使用了环境变量中配置的JDK10呢?看一下启动日志信息
很明确了,上图中红色框框中的部分说明,启动的tomcat确实是使用我环境变量中配置的JDK10,还将JDK所在的文件目录打印了出来。
同时在任务管理器中,也可以看到多出了一个java虚拟机进程
三,让tomcat使用指定JDK
其实特别简单,只需要在bin目录中的setclasspath.bat文件前面添加:
set JAVA_HOME=G:toolsJDK8_64
set JRE_HOME=G:toolsJDK8_64jre
如下图
这里,我指定tomcat使用JDK1.8来启动。双击startup.bat,访问localhost:8080,出现了tomcat的默认欢迎页,说明tomcat启动成功。
那么到底有没有使用JDK1.8呢?看启动日志
没有错了,就是使用我在setclasspath.bat中配置的JDK1.8。