Изменить путь к классу для запуска VM

Прежде всего, я работаю над Linux:) Я пытаюсь запустить ВМ с использованием JDI. Мне нужно изменить аргументы в соединителе. Этот соединитель является соединителем LaunchingConnector из Bootstrap.virtualMachineManager(). код примерно такой:

    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 из команды и изменить номер порта.

Спасибо

1 ответ

Я считаю, что путь к классу, используемый для запуска машины, не наследуется автоматически новой виртуальной машиной, которую вы создаете. Однако, похоже, что если вы используете переменные окружения для определения пути к классу, они наследуются. См. Пример не удается запустить трассировку JDI: Ошибка: не удалось найти или загрузить основной класс для аналогичной проблемы.

Другие вопросы по тегам