From 07d2ebd5e983bda7691771faf3a42d75eb0e36e6 Mon Sep 17 00:00:00 2001 From: garenchan <1412950785@qq.com> Date: Mon, 10 Dec 2018 17:04:42 +0800 Subject: [PATCH] Use JavaVersionUtils to get java version. --- .../taobao/arthas/common/JavaVersionUtils.java | 17 ++++++++++++----- .../java/com/taobao/arthas/core/Arthas.java | 5 +++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/com/taobao/arthas/common/JavaVersionUtils.java b/common/src/main/java/com/taobao/arthas/common/JavaVersionUtils.java index 1e255f8a3..e2e3c24bf 100644 --- a/common/src/main/java/com/taobao/arthas/common/JavaVersionUtils.java +++ b/common/src/main/java/com/taobao/arthas/common/JavaVersionUtils.java @@ -1,36 +1,43 @@ package com.taobao.arthas.common; +import java.util.Properties; + /** * * @author hengyunabc 2018-11-21 * */ public class JavaVersionUtils { - private static final String javaVersionStr = System.getProperty("java.specification.version"); + private static final String versionPropName = "java.specification.version"; + private static final String javaVersionStr = System.getProperty(versionPropName); private static final float javaVersion = Float.parseFloat(javaVersionStr); public static String javaVersionStr() { return javaVersionStr; } + public static String javaVersionStr(Properties props) { + return (null != props) ? props.getProperty(versionPropName): null; + } + public static float javaVersion() { return javaVersion; } public static boolean isJava6() { - return Float.toString(javaVersion).equals("1.6"); + return javaVersionStr.equals("1.6"); } public static boolean isJava7() { - return Float.toString(javaVersion).equals("1.7"); + return javaVersionStr.equals("1.7"); } public static boolean isJava8() { - return Float.toString(javaVersion).equals("1.8"); + return javaVersionStr.equals("1.8"); } public static boolean isJava9() { - return Float.toString(javaVersion).equals("9"); + return javaVersionStr.equals("9"); } public static boolean isLessThanJava9() { diff --git a/core/src/main/java/com/taobao/arthas/core/Arthas.java b/core/src/main/java/com/taobao/arthas/core/Arthas.java index 1478b2d85..54bd0ff09 100644 --- a/core/src/main/java/com/taobao/arthas/core/Arthas.java +++ b/core/src/main/java/com/taobao/arthas/core/Arthas.java @@ -3,6 +3,7 @@ package com.taobao.arthas.core; import com.sun.tools.attach.VirtualMachine; import com.sun.tools.attach.VirtualMachineDescriptor; import com.taobao.arthas.common.AnsiLog; +import com.taobao.arthas.common.JavaVersionUtils; import com.taobao.arthas.core.config.Configure; import com.taobao.middleware.cli.CLI; import com.taobao.middleware.cli.CLIs; @@ -73,8 +74,8 @@ public class Arthas { } Properties targetSystemProperties = virtualMachine.getSystemProperties(); - String targetJavaVersion = targetSystemProperties.getProperty("java.specification.version"); - String currentJavaVersion = System.getProperty("java.specification.version"); + String targetJavaVersion = JavaVersionUtils.javaVersionStr(targetSystemProperties); + String currentJavaVersion = JavaVersionUtils.javaVersionStr(); if (targetJavaVersion != null && currentJavaVersion != null) { if (!targetJavaVersion.equals(currentJavaVersion)) { AnsiLog.warn("Current VM java version: {} do not match target VM java version: {}, attach may fail.",