本文由作者鄒珍珍授權(quán)網(wǎng)易云社區(qū)發(fā)布摩窃。
一、測(cè)試背景:
? 項(xiàng)目對(duì)外提供JAR包爽茴,需要測(cè)試該JAR包對(duì)不同JDK版本(1.6至1.9版本)的兼容性灾锯。下面主要介紹在兼容性測(cè)試中兢榨,JDK多版本共存時(shí)如何配置環(huán)境變量,以及如何在IDE中切換JDK版本顺饮。
? 首先說明色乾,在對(duì)JAR包進(jìn)行JDK版本兼容性測(cè)試的時(shí)候,配置環(huán)境變量是非必須操作领突,因?yàn)橹灰獧C(jī)子上安裝了多個(gè)JDK版本,不管是Eclipse還是IDEA都可以手動(dòng)配置項(xiàng)目所使用的JDK版本案怯。但是君旦,由于大部分JAVA程序都會(huì)默認(rèn)去環(huán)境變量中取JAVA_HOME這個(gè)變量,比如Eclipse,若不手動(dòng)去配置會(huì)默認(rèn)使用環(huán)境變量中配置的JDK版本金砍,故還是需要知道如何在一臺(tái)機(jī)子上管理多個(gè)JDK版本局蚀,免得安裝了多個(gè)JDK版本后造成一些不必要的麻煩。
二恕稠、JDK多版本共存時(shí)環(huán)境配置
?1. 下載并安裝需要的JDK版本(下載地址)
?
? ? 測(cè)試需要琅绅,本人分別下載和安裝了JDK1.9,JDK1.8,JDK1.7和JDK1.6四個(gè)版本。
? 2. 配置環(huán)境變量-創(chuàng)建五個(gè)JAVA_HOME鹅巍。
? ?JAVA6_HOME:存放JDK1.6的安裝路徑千扶;
? ?JAVA7_HOME:存放JDK1.7的安裝路徑;
? ?JAVA8_HOME:存放JDK1.8的安裝路徑骆捧;
? ?JAVA9_HOME:存放JDK1.9的安裝路徑澎羞。
? ?JAVA_HOME:若需JDK1.6版本變量值設(shè)為%JAVA6_HOME%,若需1.9版本變量值設(shè)為%JAVA9_HOME%敛苇,便于切換妆绞。
?
? 3.?配置環(huán)境變量-創(chuàng)建CLASSPATH,變量值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar? ? ? ? ??
? 4.?配置環(huán)境變量-Path枫攀,新增值為%JAVA_HOME%\bin
??5.?刪除自動(dòng)配置(很重要)
? ?由于JDK安裝程序會(huì)把java.exe括饶,javaw.exe,javareg.exe這三個(gè)可執(zhí)行文件拷貝到%SystemRoot%/system32目錄下来涨,
? ?其中JDK1.8版本還會(huì)將以上三個(gè)可執(zhí)行文件拷貝到C:\ProgramData\Oracle\Java\javapath目錄下图焰,
? ?且以上路徑被操作系統(tǒng)設(shè)置為最高優(yōu)先權(quán)的PATH搜索路徑,因此會(huì)影響到JDK版本切換扫夜。
?
? ?故需要分別刪除以下目錄下的三個(gè)可執(zhí)行文件java.exe楞泼,javaw.exe,javareg.exe:
? C:\Windows\System32
? C:\ProgramData\Oracle\Java\javapath
? ?6. 驗(yàn)證JDK正確切換
? ? ?更換JAVA_HOME內(nèi)不同的變量值笤闯,打開cmd堕阔,輸入java -version,查看版本颗味。
三超陆、IDEA配置多JDK版本
? 增加JDK版本: File --> Project Structure?-->?Platform Settings?--> SDKs?--> +
? 項(xiàng)目更換JDK版本:File --> Project Structure?-->?Project Settings?-->?Project
四、修改Maven項(xiàng)目的pom.xml文件
最后還需要注意浦马,使用的JDK版本更換后时呀,需要在Maven的pom.xml文件中修改compiler插件-source參數(shù),改為指定的JDK版本晶默,否則會(huì)報(bào)錯(cuò):Error:java: 無效的源版本: 8
報(bào)錯(cuò)原因是谨娜,JDK的版本與項(xiàng)目的要求不一致,源碼編寫使用的是JAVA9語法磺陡,但是pom.xml文件中卻指定源碼通過JDK1.8(-source 1.8)來編譯趴梢。
<plugin>
????<groupId>org.apache.maven.plugins</groupId>
????<artifactId>maven-compiler-plugin</artifactId>
????<version>3.1</version>
????<configuration>
????????<source>1.8</source>?<!--?源代碼使用的開發(fā)版本?-->
????????<target>1.8</target>?<!--?需要生成的目標(biāo)class文件的編譯版本?-->
????????<!--?這下面的是可選項(xiàng)?-->
????????<meminitial>128m</meminitial>
????????<maxmem>512m</maxmem>
????????<fork>true</fork>?<!--?fork?is?enable,用于明確表示編譯版本配置的可用?-->?
????????<compilerVersion>1.8</compilerVersion>
????????<!--?這個(gè)選項(xiàng)用來傳遞編譯器自身不包含但是卻支持的參數(shù)選項(xiàng)?-->
????????<compilerArgument>-verbose?-bootclasspath?${java.home}\lib\rt.jar</compilerArgument>
????</configuration>
</plugin
更多網(wǎng)易技術(shù)漠畜、產(chǎn)品、運(yùn)營經(jīng)驗(yàn)分享請(qǐng)?jiān)L問網(wǎng)易云社區(qū)坞靶。
相關(guān)文章:
【推薦】?【譯文】為什么用戶體驗(yàn)文案在產(chǎn)品設(shè)計(jì)中如此重要憔狞?