我目前正在学习 Java 的 JDI,我正在尝试启动一个正在运行我想要的程序的虚拟机,并建立与正在运行所需程序的已启动 VM 的连接。
为此,我使用了启动连接器(“com.sun.jdi.CommandLineLaunch”)。
我给启动连接器以下参数:
LaunchingConnector connector = findConnecter();
Map args = connector.defaultArguments();
//Main Arguments
Connector.Argument mainArgs = (Connector.Argument)args.get("main");
mainArgs.setValue("Main2");
//Options Arguments
Connector.Argument options = (Connector.Argument)args.get("options");
options.setValue("-cp .");
然后使用 启动连接器VirtualMachine vm = connector.launch(args);
。但是,当我打印出使用以下代码片段加载的类列表时:
List<ReferenceType> classes = vm.allClasses();
for (int i = 0; i<classes.size(); i++){
System.out.println(classes.get(i).name());
}
Main2 类不在列表中。
我猜这是一个类路径问题,但无法让它工作。Main2.class 文件与上述代码所在的类位于同一目录中。
有谁知道是什么问题?