私は現在 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 ファイルは、上記のコードが存在するクラスと同じディレクトリにあります。
誰が問題が何であるか知っていますか?