Java 尝试连接到虚拟机时出错

Java 尝试连接到虚拟机时出错,java,jvm,Java,Jvm,我正试图连接到一个正在运行的JVM,以便使用java中的虚拟机类对其进行调试。我目前正在使用Java8和jdk1.8.0_11。我试图添加一个清单,但没有结果。我还从JDK\libs文件夹导入tools.jar文件 我的代码: import java.io.IOException; import java.util.List; import com.sun.tools.attach.AgentInitializationException; import com.sun.tools.attac

我正试图连接到一个正在运行的JVM,以便使用java中的虚拟机类对其进行调试。我目前正在使用Java8和jdk1.8.0_11。我试图添加一个清单,但没有结果。我还从JDK\libs文件夹导入tools.jar文件

我的代码:

import java.io.IOException;
import java.util.List;

import com.sun.tools.attach.AgentInitializationException;
import com.sun.tools.attach.AgentLoadException;
import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;

public class loadVM {
    public static void main(String[] args) {
        String name = "replaceAfterNameFound";
        List <VirtualMachineDescriptor> vms = VirtualMachine.list();
        for (VirtualMachineDescriptor vmd: vms) {
            System.out.println(vmd.displayName());
            if (vmd.displayName().equals(name)) {
                try {
                    VirtualMachine vm = VirtualMachine.attach(vmd.id());
                    String agent = "";
                    vm.loadAgent(agent);
                } catch(AttachNotSupportedException e) {
                    e.printStackTrace();
                } catch(IOException e) {
                    e.printStackTrace();
                } catch(AgentLoadException e) {
                    e.printStackTrace();
                } catch(AgentInitializationException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.io.IOException;
导入java.util.List;
导入com.sun.tools.attach.agentializationException;
导入com.sun.tools.attach.AgentLoadException;
导入com.sun.tools.attach.AttachNotSupportedException;
导入com.sun.tools.attach.VirtualMachine;
导入com.sun.tools.attach.VirtualMachineDescriptor;
公共类loadVM{
公共静态void main(字符串[]args){
String name=“replaceAfterNameFound”;
List vms=VirtualMachine.List();
for(VirtualMachineDescriptor vmd:vms){
System.out.println(vmd.displayName());
if(vmd.displayName().equals(name)){
试一试{
VirtualMachine vm=VirtualMachine.attach(vmd.id());
字符串代理=”;
装载代理(代理);
}捕获(附件不支持例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(代理加载异常){
e、 printStackTrace();
}捕获(代理化异常e){
e、 printStackTrace();
}
}
}
}
}
以下是我在运行时收到的错误副本:

java.util.ServiceConfigurationError:com.sun.tools.attach.spi.AttachProvider: 无法访问提供程序sun.tools.attach.WindowsAttachProvider 实例化


谢谢你们的帮助

bump------清单是不相关的,它只在jar应该作为代理加载时才起作用,但是您的操作在前面的
attach
步骤中已经失败,因此没有尝试加载代理。我是否正确地理解您对该工具和已经运行的JVM使用的是相同的
jdk1.8.0_11
?正确,这就是为什么我思考自己收到错误的原因。是的,我正在使用jdk\lib\文件夹中的tools.jar文件。我正在尝试连接到另一个以前打开的JVM,该JVM正在运行相同的版本。