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 {