本文由作者邹珍珍授权网易云社区发布。

一、测试背景:

项目对外提供JAR包,需要测试该JAR包对不同JDK版本(1.6至1.9版本)的兼容性。下面主要介绍在兼容性测试中,JDK多版本共存时如何配置环境变量,以及如何在IDE中切换JDK版本。

首先说明,在对JAR包进行JDK版本兼容性测试的时候,配置环境变量是非必须操作,因为只要机子上安装了多个JDK版本,不管是Eclipse还是IDEA都可以手动配置项目所使用的JDK版本。但是,由于大部分JAVA程序都会默认去环境变量中取JAVA_HOME这个变量,比如Eclipse,若不手动去配置会默认使用环境变量中配置的JDK版本,故还是需要知道如何在一台机子上管理多个JDK版本,免得安装了多个JDK版本后造成一些不必要的麻烦。

二、JDK多版本共存时环境配置

下载并安装需要的JDK版本(下载地址)

测试需要,本人分别下载和安装了JDK1.9,JDK1.8,JDK1.7和JDK1.6四个版本。

配置环境变量-创建五个JAVA_HOME。

JAVA6_HOME:存放JDK1.6的安装路径;

JAVA7_HOME:存放JDK1.7的安装路径;

JAVA8_HOME:存放JDK1.8的安装路径;

JAVA9_HOME:存放JDK1.9的安装路径。

JAVA_HOME:若需JDK1.6版本变量值设为%JAVA6_HOME%,若需1.9版本变量值设为%JAVA9_HOME%,便于切换。

配置环境变量-创建CLASSPATH,变量值为.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar

配置环境变量-Path,新增值为%JAVA_HOME%bin

删除自动配置(很重要)

由于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

验证JDK正确切换

更换JAVA_HOME内不同的变量值,打开cmd,输入java -version,查看版本。

三、IDEA配置多JDK版本

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

项目更换JDK版本:File --> Project Structure --> Project Settings --> Project

四、修改Maven项目的pom.xml文件

最后还需要注意,使用的JDK版本更换后,需要在Maven的pom.xml文件中修改compiler插件-source参数,改为指定的JDK版本,否则会报错:Error:java: 无效的源版本: 8

报错原因是,JDK的版本与项目的要求不一致,源码编写使用的是JAVA9语法,但是pom.xml文件中却指定源码通过JDK1.8(-source 1.8)来编译。

org.apache.maven.plugins

maven-compiler-plugin

3.1

1.8

1.8

128m

512m

true

1.8

-verbose -bootclasspath ${java.home}\lib\rt.jar

更多网易技术、产品、运营经验分享请访问网易云社区。

文章来源: 网易云社区

java中如何调兼容性_兼容性测试中如何切换和管理多个JDK版本相关推荐

  1. java怎么调用支付接口测试_微信支付中微信红包的接口测试,Java版本

    需要有认证的公众号,且开通了微信支付,商户平台且开通了现金红包的权限即可. 商户登陆地址:https://pay.weixin.qq.com选择查看营销中心的现金红包. 现金红包的官网文档说明: ht ...

  2. 软件测试缺陷等级划分_游戏测试中缺陷等级分类

    给大家讲游戏测试中缺陷等级分类,它的等级区分不同于应用软件系统的测试,行业不同,分类标准也不同. 视觉级缺陷:此类缺陷不会对游戏功能造成影响,但是一款好游戏不光要心灵美(技术好)也要外型美,给玩家带来 ...

  3. oppo人岗匹配测评_在测试中使用匹配器

    oppo人岗匹配测评 我们被迫在测试代码中写太多断言行的日子已经一去不复返了. 镇上有一个新的警长:assertThat和他的代理人:匹配者. 好吧,这不是什么新东西,但是无论如何,我想向您介绍匹配器 ...

  4. java在W n8安装_在windows中安装JDK8并配置环境变量-java环境变量设置

    学习JAVA,必须得安装一下JDK(Java development kit java开发工具包),配置一下环境就可以学习JAVA了,下面是下载和安装JDK的教程: 一.去oracle官网上下载jdk ...

  5. java dom 获得子元素_在JavaScript中删除DOM节点的所有子元素

    我将如何删除JavaScript中DOM节点的所有子元素? 说我有以下(丑陋的)HTML: hello world 我抓住了我想要的节点,如下所示: var myNode = document.get ...

  6. java直线绕点旋转_几何画板中怎样使直线绕点旋转

    在平面内的旋转都是围绕点进行的,在前面的教程中我们学习了在几何画板中制作三角形绕顶点转动的动画教程,除此之外,我们也可以在几何画板中制作使直线绕点旋转的动画效果,那么到底是有哪些方法可以实现呢?下面将 ...

  7. java有序数组找中位数_有序数组中找中位数

    题目:两个有序数组A和B,大小都是n,寻找这两个数组合并后的中位数.时间复杂度为O(logn). 中位数:如果数组的个数是奇数,那么中位数的值就是有序时处于中间的数:如果数组个数是偶数的,那么就是有序 ...

  8. 下面选项中属于java基本数据类型的有_下列选项中不属于Java基本数据类型的是...

    [单选题]美国最大的图书馆位于 [单选题]阿育王基本统一了(). [单选题]"真比美重要,美更多的是一种诱惑"是()的观点. [单选题]德尔菲城邦的神庙是(). [单选题]中国被俄 ...

  9. pcl中ransac提取直线_复杂场景中的一个图像配准思路

    在很多时候,我们可能需要使用到图像的识别与配准工作,来判断某个特征或者是划出某个特定特征的位置.现在的深度学习已经能够比较好地解决这个问题,比如常见的YOLO,可以利用几行设定代码就能够划出所需要识别 ...

最新文章

  1. JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)
  2. android 电容屏(三):驱动调试之驱动程序分析篇
  3. php 不刷新提交,提交表单而不刷新页面ajax,php,javascript?
  4. 北斗三号b1c频点带宽_【导航论坛】北斗三号卫星导航信号及接收策略
  5. 数据结构与算法python—12.二叉搜索树及python实现与leetcode总结
  6. 利用Lua脚本语言制作魔兽WOW插件
  7. 用Markdown做日记和任务跟踪的DailyNotes
  8. 解密Cocos2D中的Lua源码
  9. java.lang.ClassNotFoundException: org.jaxen.JaxenException 解决方法
  10. 2017年Python从入门到实战教程-徐培成-专题视频课程
  11. ubuntu 虚拟机复制粘贴文件(文本) windows
  12. 煤炭及煤化工加工会产生什么危废_煤化工固体废物的清洁处置
  13. 树的最小表示法 UVA 12489 - Combating cancer
  14. nrf uart for android,nrf connect
  15. 惊悚游戏《寂静岭》厕所3D场景模型制作分享
  16. python飞机大战源码素材包_python(pygame)滑稽大战(类似飞机大战) 教程
  17. Ceph Crush-Map与Ceph调优及其日常管理
  18. 学会这些思维模型,窥见查理·芒格的致胜秘笈(二)
  19. Linux云计算架构--课程目录(持续更新...)
  20. UE4 AI移动到 出现的BUG以及解决方案

热门文章

  1. 微信公众号开发(2)-测试号申请
  2. 微信小程序获取头部高度
  3. Spring注解介绍
  4. 趣文:如果老婆和女朋友她们是程序
  5. 信息论与编码:信道编码的基本概念
  6. 知道为什么人活着累吗
  7. 9268. 酒鬼(DP)
  8. 《算法分析与设计》学习心得
  9. 基于arduino的wifi自动开门装置(Arduino)
  10. linux el 7安装失败,CentOS 6.7 安装 cloog-ppl-0.15.7-1.2.el6.i686.rpm 失败