Как общаться из Eclipse RCP в «хост» Eclipse IDE

У меня есть приложение Eclipse RCP, которое было запущено из Eclipse IDE в режиме отладки. Я создал простой элемент управления SWT TreeViewer в приложении RCP для представления цепочки причин и трассировки стека для Throwable. Я бы хотел, чтобы, если разработчик дважды щелкнул StackTraceElement в средстве просмотра, "хост" Eclipse IDE открыл соответствующий файл с правильным номером строки.

Лучший обходной путь, который у меня есть на данный момент, заключается в том, что я могу распечатать StackTraceElement в консоли (IDE), а затем щелкнуть (filename.java:linenumber), чтобы открыть файл таким образом.

Мой вопрос состоит из двух частей:

  1. Есть ли какой-либо встроенный путь связи от приложения RCP (в режиме отладки, если это важно) обратно к хостовой IDE?
  2. Если есть такой путь, есть ли какая-то команда, чтобы указать IDE, чтобы открыть файл в нужном месте?

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


person Dave Hartnoll    schedule 22.10.2013    source источник
comment
Цель того, что вы делаете, немного неясна. Это связано только с отладкой или это предполагаемое поведение RCP, о котором вы упоминаете?   -  person Fredrik    schedule 22.10.2013
comment
Предполагается, что приложение RCP перехватывает свои собственные исключения и отображает все подробности о них. Пока разработчики отлаживают приложение RCP, было бы неплохо повлиять на хост-среду Eclipse IDE, чтобы она открывала файлы, на которые ссылаются элементы StackTraceElements, доступные из исключения.   -  person Dave Hartnoll    schedule 22.10.2013
comment
Одной простой альтернативой может быть добавление точки останова исключения Java (например, с помощью кнопки J! в представлении точек останова) и использование отладчика хоста для навигации по стеку вызовов.   -  person Andy Thomas    schedule 22.10.2013
comment
Спасибо за предложение @Andy, но на самом деле это не альтернатива варианту использования, который я имею в виду. Думайте об этом больше, как когда вы получаете исключение и выполняете e.printStackTrace() в консоли. При просмотре трассировки стека вы видите ссылки на имя файла:номер строки и хотите открыть эти файлы, чтобы посмотреть код. Конечно, я могу снова запустить приложение с точкой останова исключения, но это не то же самое, что просмотреть запись исключения после события.   -  person Dave Hartnoll    schedule 24.10.2013


Ответы (1)


Если бы то, что вы описываете как RCP, вместо этого было бы отдельным подключаемым модулем, работающим в IDE хоста, тогда связь была бы очень простой и частью функциональности Eclipse. Но то, что вы описываете, - это связь между двумя процессами Java, а это другое. Конечно, есть способы, погуглите "межпроцессное взаимодействие java", но я не могу придумать ничего простого и легкого. Я не знаю, сколько дополнительной работы вы хотели бы сделать только для того, чтобы упростить отладку вашего приложения.

Вы также можете взглянуть на удаленную отладку. Это позволит вам запускать приложение RCP отдельно от Eclipse и по-прежнему иметь возможность отлаживать его. См. эти вопросы для получения дополнительной информации

person Fredrik    schedule 23.10.2013
comment
Спасибо. Я понимаю, что процессы Java являются отдельными, но поскольку между ними уже есть канал связи (по крайней мере, при использовании отладчика), я надеялся, что смогу что-то использовать. После того, как я задал свой вопрос, я нашел этот github.com/marook/eclipse-remote-control что, безусловно, помогло бы (за исключением того, что лицензия GPL является проблемой). - person Dave Hartnoll; 24.10.2013