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版本不匹配,則證明已經修改成功。