From 62b6d1aec9da9c7a7123951eea5069f97c307d4c Mon Sep 17 00:00:00 2001 From: skrbug Date: Sun, 16 May 2021 21:11:13 +0800 Subject: [PATCH] fix: support jdk11 --- agent/pom.xml | 2 +- cop/src/main/java/code/landgrey/copagent/Cop.java | 13 ++++++++++--- .../code/landgrey/copagent/utils/ProcessUtils.java | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/agent/pom.xml b/agent/pom.xml index 6923065..eb4e0b2 100644 --- a/agent/pom.xml +++ b/agent/pom.xml @@ -5,7 +5,7 @@ copagent code.landgrey - 1.0-SNAPSHOT + 1.3 4.0.0 diff --git a/cop/src/main/java/code/landgrey/copagent/Cop.java b/cop/src/main/java/code/landgrey/copagent/Cop.java index b755010..4da80c9 100644 --- a/cop/src/main/java/code/landgrey/copagent/Cop.java +++ b/cop/src/main/java/code/landgrey/copagent/Cop.java @@ -20,15 +20,22 @@ public class Cop { String filterClassName = "[unknown]"; String attach_jar_path = null; String current_jar_path = PathUtils.getCurrentJarPath(); +// AnsiLog.info("current_jarPth: " + current_jar_path); + AnsiLog.info("Java version: "+ JavaVersionUtils.javaVersionStr()); HashMap version_info = ProjectVersionUtils.get_version_info(); // add "-Xbootclasspath/a" command line start cop.jar - boolean is_boot_start = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().contains("-Xbootclasspath/a"); + AnsiLog.info("args length: "+args.length); - if(is_boot_start){ + List argsList = Arrays.asList(args); + + boolean is_boot_start = argsList.contains("bootstart_flag"); + boolean is_greater_than_jre9 = argsList.contains("greater_than_jdk9_flag"); + + if(is_boot_start || is_greater_than_jre9 ){ jvm_pid = args[0]; attach_jar_path = args[1]; - if(args.length == 3){ + if(args.length >= 3){ filterClassName = args[2]; } AnsiLog.info("Try to attach process " + jvm_pid + ", please wait a moment ..."); diff --git a/cop/src/main/java/code/landgrey/copagent/utils/ProcessUtils.java b/cop/src/main/java/code/landgrey/copagent/utils/ProcessUtils.java index 7500b19..adc97fd 100644 --- a/cop/src/main/java/code/landgrey/copagent/utils/ProcessUtils.java +++ b/cop/src/main/java/code/landgrey/copagent/utils/ProcessUtils.java @@ -335,6 +335,11 @@ public class ProcessUtils { command.addAll(attachArgs); + if (!JavaVersionUtils.isLessThanJava9()) + command.add("greater_than_jdk9_flag"); + if (toolsJar != null && toolsJar.exists()) + command.add("bootstart_flag"); + ProcessBuilder pb = new ProcessBuilder(command); try {