Отладка ProcessBuilder - PullRequest
       16

Отладка ProcessBuilder

4 голосов
/ 09 февраля 2012

Я создал исполняемый jar-файл и выполнил его с помощью компоновщика процессов из другой java-программы.Вот мой код -

public class SomeClass {
public static void main(String[] args) {
    Process p = null;
    ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar");
    pb.directory(new File("/Users/vivek/servers/azkaban-0.10/TestApp/src"));
    try {
        p = pb.start();
    } catch(Exception ex) {
        ex.printStackTrace();
    }
}

}

Я пытаюсь отладить src.jar из затмения.Я предоставил src проекта в качестве внешнего проекта в своей конфигурации отладки, но он по-прежнему не достигает ни одной из моих точек останова.Есть ли способ настроить среду отладки для чего-то подобного?

Ответы [ 2 ]

5 голосов
/ 25 марта 2012

Хорошо, так что мне удалось заставить это работать.К сожалению, я не могу найти пример проекта, который использовал для этого, поэтому я постараюсь объяснить как можно лучше.Рассмотрим эту строку сверху -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar");

Все, что мне нужно было сделать, это добавить Xdebug в качестве параметра к этому -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005", "src.jar");

Затем я создал среду отладки в eclipse, установил порткак 5005 и установить несколько точек останова в исходном коде jar, и это сработало!

0 голосов
/ 09 февраля 2012

метод отладки jar пакета в Eclipse:

  1. Выберите банку в ссылочной библиотеке проекта.
  2. В исходном приложении java вы можете указать местоположение исходного кода.
  3. Вызовите некоторые классы файла JAR из вашего проекта.
  4. Добавьте точки останова и отладьте ваш проект.

В этом случае файл jar и ваш проект выполняются в одном и том же процессе.

Но когда вы запускаете файл jar ProcessBuilder, файл jar выполняется в другом процессе, независимом от вашего проекта, конечно, независимо от eclipse, то есть файл jar работает так, как вы вводите «java -jar jarfile» в командной строке.

...