- package easy.sql.tools;
- import easy.sql.EasySQL;
- public class Tools {
- /**
- * 比较运行的java虚拟机版本号,是否符合最低要求
- *
- * 先比较版本号是否相同,如果不同,那么继续
- * 根据下划线“_”拆分,把版本号分为大版本号和小版本号,然后再根据逗号“.”拆分大版本号,
- * 将拆分的字符串转换为数字,在逐个去比较
- * 如果比较大版本号部分时,区分不出大小,
- * 就比较小版本号
- * @return 1表示符合要求,0表示不符合要求,-1表示未知错误
- */
- public static int javaVersion(){
- int ret=-100;//初始值
- String curjavVer=System.getProperty("java.version");
- // String curjavVer="1.6";
- //首先判断两个版本号是否相同
- if(EasySQL.JAVA_VERSION_MIN.equals(curjavVer)){
- ret=1;
- }else{
- //先根据下划线“_”拆分,把版本号分为大版本号和小版本号
- String[] curjavVerArray=curjavVer.split("_");
- String[] javaVersionMinArray=EasySQL.JAVA_VERSION_MIN.split("_");
- //根据逗号“.”拆分大版本号
- String[] bigCurjavVerArray=curjavVerArray[0].split("\\\\.");
- String[] bigJavaVersionMinArray=javaVersionMinArray[0].split("\\\\.");
- int bigCurjavVerArrayLen=bigCurjavVerArray.length;
- int bigJavaVersionMinArraylen=bigJavaVersionMinArray.length;
- int tag=-1;//1表示大版本符合要求,0表示大版本不符合要求,-1表示未知
- /*
- * 如果当前大版本号的位数 与 最低要求的大版本号的位数相同
- * 首先找出大版本号部分中位数少的,以该位数为基础进行比较
- */
- int size=0;
- if(bigCurjavVerArrayLen>bigJavaVersionMinArraylen){
- size=bigJavaVersionMinArraylen;
- }else if(bigCurjavVerArrayLen<bigJavaVersionMinArraylen){
- size=bigCurjavVerArrayLen;
- }else{//如果位数相等
- size=bigCurjavVerArrayLen;
- }
- for(int i=0;i<size;i++){
- int bigCurjavVer=Integer.parseInt(bigCurjavVerArray[i]);
- int bigJavaVersionMin=Integer.parseInt(bigJavaVersionMinArray[i]);
- if(bigCurjavVer>bigJavaVersionMin){
- tag=1;
- break;
- }else if(bigCurjavVer<bigJavaVersionMin){
- tag=0;
- break;
- }else{
- tag=-1;
- }
- }
- if(tag==1){
- ret=1;
- }else if(tag==0){
- ret=0;
- }else if(tag==-1){
- //如果仍未比较出大小,那么比较最后一位,谁有最后一位,谁就是最大的
- if(bigCurjavVerArrayLen>bigJavaVersionMinArraylen){
- ret=1;
- }else if(bigCurjavVerArrayLen<bigJavaVersionMinArraylen){
- ret=0;
- }
- }
- //=====================================================================================
- //比较小版本号部分
- //=====================================================================================
- if(ret!=1 && ret!=0 && ret!=-1){
- //当ret==-1时,说明比较大版本号部分时,没有区分出大小,那么继续比较小版本号,小版本号只比较一个数字
- if(curjavVerArray.length==1 && javaVersionMinArray.length==1){
- //如果都没有小版本号,那么无操作
- }else if(curjavVerArray.length==2 && javaVersionMinArray.length==1){
- //如果当前java版本号有小版本号部分,而要求的最低java版本号没有小版本部分,那么无需比较,一定当前的大
- ret=1;
- }else if(curjavVerArray.length==1 && javaVersionMinArray.length==2){
- //如果当前java版本号没有小版本号部分,而要求的最低java版本号有小版本部分,那么无需比较,一定当前的小
- ret=0;
- }else if(curjavVerArray.length==2 && javaVersionMinArray.length==2){
- //如果都有小版本号部分,那么进行比较
- int smllCurjavVer=Integer.parseInt(curjavVerArray[1]);
- int smlljavaVersionMin=Integer.parseInt(javaVersionMinArray[1]);
- if(smllCurjavVer>=smlljavaVersionMin){
- ret=1;
- }else{
- ret=0;
- }
- }
- }
- }
- return ret;
- }
- public static void main(String[] args){
- System.out.println(new Tools().javaVersion());
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1010201410604.html
来源: http://www.codesnippet.cn/detail/1010201410604.html