0

私は現在 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 ファイルは、上記のコードが存在するクラスと同じディレクトリにあります。

誰が問題が何であるか知っていますか?

4

1 に答える 1