我们如何在构建路径中使用 jars 执行 -javaagent?

How can we execute -javaagent with jars in the buildpath?

如何使用 class 路径中的 jar 执行 JVM 参数 -javaagent。 知道罐子的位置会有所帮助。我不想明确提及罐子的位置。感谢任何帮助。

        String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
        int p = nameOfRunningVM.indexOf('@');
        String pid = nameOfRunningVM.substring(0, p);

        try {
            VirtualMachine vm = VirtualMachine.attach(pid);
            vm.loadAgent("LOCATION_FROM_BUILDPATH", "");
            vm.detach();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

试试下面的代码

   String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
    int p = nameOfRunningVM.indexOf('@');
    String pid = nameOfRunningVM.substring(0, p);

    try {
        String agentJarPath = null;
        final String classPath = System.getProperty("java.class.path", ".");
        final String[] classPathElements = classPath.split(System.getProperty("path.separator"));
        List<String> retval = new ArrayList<String>();
        for(final String element : classPathElements){
            if(element.contains("<agent-jar-file-name>")){
                agentJarPath = element;
                break;
            }
        }            

        VirtualMachine vm = VirtualMachine.attach(pid);
        vm.loadAgent(agentJarPath, "");   
        vm.detach();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }