兼容性測試中如何切換和管理多個JDK版本

本文由做者鄒珍珍受權網易雲社區發佈。java

1、測試背景:apache

項目對外提供JAR包,須要測試該JAR包對不一樣JDK版本(1.6至1.9版本)的兼容性。下面主要介紹在兼容性測試中,JDK多版本共存時如何配置環境變量,以及如何在IDE中切換JDK版本。maven

首先說明,在對JAR包進行JDK版本兼容性測試的時候,配置環境變量是非必須操做,由於只要機子上安裝了多個JDK版本,無論是Eclipse仍是IDEA均可以手動配置項目所使用的JDK版本。可是,因爲大部分JAVA程序都會默認去環境變量中取JAVA_HOME這個變量,好比Eclipse,若不手動去配置會默認使用環境變量中配置的JDK版本,故仍是須要知道如何在一臺機子上管理多個JDK版本,省得安裝了多個JDK版本後形成一些沒必要要的麻煩。測試

2、JDK多版本共存時環境配置spa

  1. 下載並安裝須要的JDK版本(下載地址)

測試須要,本人分別下載和安裝了JDK1.9,JDK1.8,JDK1.7和JDK1.6四個版本。
  1. 配置環境變量-建立五個JAVA_HOME。

    JAVA6_HOME:存放JDK1.6的安裝路徑;操作系統

    JAVA7_HOME:存放JDK1.7的安裝路徑;插件

    JAVA8_HOME:存放JDK1.8的安裝路徑;3d

    JAVA9_HOME:存放JDK1.9的安裝路徑。code

    JAVA_HOME:若需JDK1.6版本變量值設爲%JAVA6_HOME%,若需1.9版本變量值設爲%JAVA9_HOME%,便於切換。orm

  1. 配置環境變量-建立CLASSPATH,變量值爲.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar
  2. 配置環境變量-Path,新增值爲%JAVA_HOME%bin
  3. 刪除自動配置(很重要)

    因爲JDK安裝程序會把java.exe,javaw.exe,javareg.exe這三個可執行文件拷貝到%SystemRoot%/system32目錄下,

    其中JDK1.8版本還會將以上三個可執行文件拷貝到C:ProgramDataOracleJavajavapath目錄下,

    且以上路徑被操做系統設置爲最高優先權的PATH搜索路徑,所以會影響到JDK版本切換。

故須要分別刪除如下目錄下的三個可執行文件java.exe,javaw.exe,javareg.exe:

C:WindowsSystem32

C:ProgramDataOracleJavajavapath

  1. 驗證JDK正確切換

    更換JAVA_HOME內不一樣的變量值,打開cmd,輸入java -version,查看版本。

3、IDEA配置多JDK版本

增長JDK版本: File --> Project Structure --> Platform Settings --> SDKs --> +

項目更換JDK版本:File --> Project Structure --> Project Settings --> Project

4、修改Maven項目的pom.xml文件

最後還須要注意,使用的JDK版本更換後,須要在Maven的pom.xml文件中修改compiler插件-source參數,改成指定的JDK版本,不然會報錯:Error:java: 無效的源版本: 8

報錯緣由是,JDK的版本與項目的要求不一致,源碼編寫使用的是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> <!-- 源代碼使用的開發版本 -->
    <target>1.8</target> <!-- 須要生成的目標class文件的編譯版本 -->

    <!-- 這下面的是可選項 -->
    <meminitial>128m</meminitial>
    <maxmem>512m</maxmem>
    <fork>true</fork> <!-- fork is enable,用於明確表示編譯版本配置的可用 --> 
    <compilerVersion>1.8</compilerVersion>

    <!-- 這個選項用來傳遞編譯器自身不包含可是卻支持的參數選項 -->
    <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>

</configuration>

</plugin

更多網易技術、產品、運營經驗分享請訪問網易雲社區。

文章來源: 網易雲社區

相關文章
相關標籤/搜索