1.情景展示

  tomcat7使用jdk1.7;tomcat8使用jdk1.8。两个tomcat在一台机器下同时启动,你会发现这两个tomcat使用的是一个版本的jdk,

  那就是你配置过的JAVA_HOME。

  查看你的Windows下当前Java版本

  查看我的tomcat7引入的java版本

  第一步:知道tomcat7的根目录下的startup.bat文件

  {TOMCAT_HOME}/startup.bat,在最后一行添加:pause;,进行保存

  这样,启动tomcat时,运行startup.bat文件的DOS命令就不会自动关闭。

  这样,我们就可以看到tomcat所使用的几个主要的变量。

  CATALINA_BASE:

  CATALINA_HOME:

  CATALINA_TMPDIR: 临时文件存放位置

  JRE_HOME: JVM所在根路径(运行java文件)

  CLASSPATH:

  我们可以看到,tomcat7的java配置是jdk1.8,说明它也是从JAVA_HOME里拿到的。

2.解决方案

  想要解决这个问题,可以这样:

  tomcat8不用做修改,默认从环境变量JAVA_HOME中取;修改tomcat7中对于JAVA_HOME的引用。

  修改tomcat7的jdk使用路径。

  方案一:修改startup.bat。(推荐使用,简单粗暴)

  文件位置:${TOMCAT_HOME}/bin/startup.bat

  在正式代码开始前,添加JAVA_HOME和JRE_HOME的配置。

:配置java路径
set JAVA_HOME=D:\oracle-java-1.7-x86\jdk1.7.0_79
set JRE_HOME=D:\oracle-java-1.7-x86\jdk1.7.0_79\jre

  保存,重启tomcat。

  JRE的配置修改成功,将startup.bat中的pause;去掉即可。

  教你一招:这里也可以使用相对路径哦。

  比如:我的tomcat和jdk都防在D盘根目录下

set JAVA_HOME=..\oracle-java-1.7-x86\jdk1.7.0_79
set JRE_HOME=..\oracle-java-1.7-x86\jdk1.7.0_79\jre

  路径正确,引用成功。

   路径错误,引用失败,报错如下:

  找不到JRE。

  说明:通常我们在新服务器上部署项目时,往往需要自己提供tomcat和jdk,为了方便,我们就可以这样做:  

  将jdk放到Tomact目录下,在startup.bat文件中使用相对路径指定JAVA_HOME和JRE_HOME的位置。

  这样,我们不仅省去了配置java环境变量的麻烦,还省去了为某个tomcat指定jdk的麻烦;

  而且,tomcat想放到哪个磁盘的哪个目录下,位置可以随时进行迁移,而不必再次修改startup.bat文件中tomcat对于jdk的引用。

  方案二:修改setclasspath.bat文件

  位置:${TOMCAT_HOME}/bin/setclasspath.bat

  第一步:修改java.exe的路径(Java类)

  打开该文件,找到指定jdk的这句话

  这就是为什么tomcat默认从环境变量中寻找jdk的原因。

:原来的
:set _RUNJAVA="%JRE_HOME%\bin\java.exe"
:修改后
set _RUNJAVA="D:\oracle-java-1.7-x86\jdk1.7.0_79\bin\java.exe"

  修改成你的jdk所在路径,保存。

  第二步:修改jdb.exe的路径(Java类调试器) 

  还是该文件,修改,保存,重启tomcat即可。

:修改前
set _RUNJDB="%JAVA_HOME%\bin\jdb.exe"
:修改后
set _RUNJDB="D:\oracle-java-1.7-x86\jdk1.7.0_79\bin\jdb.exe"  

  可以将原来的代码使用:进行注释掉,这样,后期也容易改回去。

  java.exe:JVM

  jdb.exe: JAVA调试器

  注意:这里用方式一的pause;无法进行测试,因为我们并没有改JRE_HOME的值。

  所以,测试的话,需要将jdk1.8编译好的项目放入到tomcat7中,倘若报错信息是:java版本不匹配,则证明已经修改成功。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

 

tomcat 指定(自定义)JDK路径的两种方式的更多相关文章

  1. Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求

    Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...

  2. 如何修改linux下tomcat指定的jdk路径

    一般情况下,一台服务器只跑一个项目,只需根据所需项目,将linux默认的jdk环境配置好即可.某些时候一台服务器上会跑多个项目,而且各个项目需要的JDK版本各不相同,或者为了使业务独立开来,需要指定T ...

  3. maven 编译插件指定jdk版本的两种方式

    第一种方式: <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration&g ...

  4. docker-compose up使用自定义的网段的两种方式(从其根源指定)

    问题描述         还是那个研究安全大业的同事,在部署他的秘密武器,是用docker-compose部署的,有差不多20多个docker-compose.yml文件,然后由于docker-com ...

  5. nginx指定文件路径有两种方式root和alias

    背景 一直没明白这个配置啥意思,反正凑合用吧,不过老凑合总不是个事,没搞明白更容易忘,别人问还答不上来.反正也很简单,就搞明白点记下来. 知识点 root实例: location ^~ /t/ { r ...

  6. EntityFramework Core 2.0自定义标量函数两种方式

    前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...

  7. JavaWeb应用中初始化Log4j的两种方式

    本文主要介绍了普通JavaWeb应用(基于Tomcat)中初始化Log4j的两种方式: 1.通过增加 InitServlet ,设置令其自启动来初始化 Log4j . 2.通过监听器 ServletC ...

  8. 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)

    设置tomcat虚拟路径的两种方法(Eclipse.tomcat.IDEA) 三种方式设置虚拟服务器路径如果我们要实现一个上传文件的功能,但是又想要上传的文件不会随着自己web服务器的重启而不能访问了 ...

  9. Springboot以Tomcat为容器实现http重定向到https的两种方式

    1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...

随机推荐

  1. 基于opencv 识别、定位二维码 (c++版)

    前言 因工作需要,需要定位图片中的二维码:我遂查阅了相关资料,也学习了opencv开源库.通过一番努力,终于很好的实现了二维码定位.本文将讲解如何使用opencv定位二维码. 定位二维码不仅仅是为了识 ...

  2. ASP.NET Core快速入门(第5章:认证与授权)--学习笔记

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务31:课时介绍 1.Cookie-based认证与授权 2.Cookie- ...

  3. C# 学习笔记 多态(二)抽象类

    多态是类的三大特性之一,抽象类又是多态的实现方法之一.抽象类是什么呢,如果把虚方法比作一个盛有纯净水的杯子,那么此时的“纯净水”就是事先定义好的方法,我们可以根据不同的需求来改变杯子中所事先盛放的是“ ...

  4. php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符

    php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符方式一:使用花括号,前缀部分不需要用单引号$nums10 = 100;$xxx*${bcount.$nums10}['m54']/$n ...

  5. AOD.NET实现数据库事物Transaction

    在开始介绍文章主要内容前先简单说一下事务 1.事务介绍 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库 ...

  6. linux源代码获取

    Ubuntu获取 # which ls /bin/ls # dpkg -S /bin/ls coreutils: /bin/ls # apt-get source coreutils CentOS获取 ...

  7. 【AI测试】也许这有你想知道的人工智能 (AI) 测试--开篇

    人工智能测试 什么是人工智能,人工智能是怎么测试的.可能是大家一开始最想了解的. 大家看图中关于人工智能的定义.通俗点来说呢,就是 让机器实现原来只有人类才能完成的任务:比如看懂照片,听懂说话,思考等 ...

  8. 史上最全的Spring Boot Cache使用与整合

    一:Spring缓存抽象# Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接 ...

  9. vue导出文件下载

    项目当中有用到文件的导出功能,以此来总结 request({ /*url: this.exportUrl,*/ url: `************`, method: "GET" ...

  10. gerrit的使用以及问题总结

    看到了一篇很好的博客,大纲如下: 链接如下: https://www.ieclipse.cn/2016/05/14/other/tech-gerrit-guide/index.html 另外一篇: 代 ...