1

まず、Linux で作業しています :) JDI を使用して VM を起動しようとしています。コネクタの引数を変更する必要があります。コネクタは Bootstrap.virtualMachineManager() からの LaunchingConnector コネクタです。コードは次のようなものです。

    for (LaunchingConnector connector : Bootstrap.virtualMachineManager().
       launchingConnectors()) {
        if (connector.name().equals("com.sun.jdi.CommandLineLaunch")) {
           Map<String, Connector.Argument> map = connector.defaultArguments();

           StringArgument arg = (StringArgument) map.get("main");
           arg.setValue(mainClass); //junit core

           arg = (StringArgument) map.get("options");
           arg.setValue(classpath);

JUnitコアを探すようにクラスパスを変更しようとしています。新しいクラスパスは「../../lib/junit-4.6.jar」で、クラスは「org.junit.runner. JUnitCore」

走ってみると

    VirtualMachine vm = connector.launch(map);

次のようなコマンドを実行しようとするため、VMStartException がスローされます。

    /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java ../../lib/junit-4.6.jar -Xdebug -Xrunjdwp:transport=dt_socket,address=CIS-Visitor:57881,suspend=y org.junit.runner.JUnitCore

クラスパスを変更しておらず、最終的には vm を返しません。誰かがこれを変更する方法を教えてもらえますか? また、コマンドから -Xdebug を取り出し、ポート番号を変更したいと思います。

ありがとう

4

1 に答える 1

0

マシンの起動に使用されるクラスパスは、作成する新しい VM によって自動的に継承されないと思います。ただし、代わりに環境変数を使用してクラスパスを定義すると、それらは継承されるようです。同様の問題については、 「 JDI トレースを実行できない例: エラー: メイン クラスが見つからないかロードできませんでした」を参照してください。

于 2013-06-06T17:00:29.843 に答える