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

它没有改变类路径,最后它没有返回一个虚拟机。谁能告诉我改变这种情况的方法?我还想从命令中取出 -Xdebug 并更改端口号。

谢谢

4

1 回答 1

0

我相信用于启动机器的类路径不会被您创建的新 VM 自动继承。但是,看起来如果您使用环境变量来定义类路径,它们就会被继承。有关类似问题,请参阅无法运行 JDI 跟踪示例:错误:无法找到或加载主类。

于 2013-06-06T17:00:29.843 回答