一,前言

我们都知道,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的任务管理器中我们可以看到:




windows bat脚本执行java main方法 bat脚本指定jdk路径_JAVA


因为我现在的电脑上正在运行一个eclipse所以这里有一个Java虚拟机进程。

那么如何让tomcat使用指定的JDK呢?首先来看一下不让tomcat使用指定JDK,即使用电脑的环境变量中配置的JDK的时候是什么样的。

二,tomcat使用默认环境变量中的JDK配置

  看一下环境变量中我们配置的JDK版本:打开命令行窗口->输入 java -version->回车


windows bat脚本执行java main方法 bat脚本指定jdk路径_环境变量_02


  可以看到,我的电脑上环境变量中配置的是JDK10。

  启动tomcat(我使用的tomcat版本是:apache-tomcat-7.0.85):进入bin目录双击startup.bat。

  打开浏览器,访问localhost:8080,可以看到tomcat的默认欢迎页


windows bat脚本执行java main方法 bat脚本指定jdk路径_JAVA_03


  那么到底tomcat启动是时候是不是使用了环境变量中配置的JDK10呢?看一下启动日志信息


windows bat脚本执行java main方法 bat脚本指定jdk路径_环境变量_04


  很明确了,上图中红色框框中的部分说明,启动的tomcat确实是使用我环境变量中配置的JDK10,还将JDK所在的文件目录打印了出来。

  同时在任务管理器中,也可以看到多出了一个java虚拟机进程


windows bat脚本执行java main方法 bat脚本指定jdk路径_bat文件指定jdk路径_05


三,让tomcat使用指定JDK

  其实特别简单,只需要在bin目录中的setclasspath.bat文件前面添加:   

    set JAVA_HOME=G:oolsJDK8_64    set JRE_HOME=G:oolsJDK8_64jre

  如下图


windows bat脚本执行java main方法 bat脚本指定jdk路径_环境变量_06


  这里,我指定tomcat使用JDK1.8来启动。双击startup.bat,访问localhost:8080,出现了tomcat的默认欢迎页,说明tomcat启动成功。

  那么到底有没有使用JDK1.8呢?看启动日志


windows bat脚本执行java main方法 bat脚本指定jdk路径_环境变量_07


  没有错了,就是使用我在setclasspath.bat中配置的JDK1.8。