Изменить путь к классу для запуска 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: Ошибка: не удалось найти или загрузить основной класс для аналогичной проблемы.