Несоответствующий вывод в Eclipse Console View - PullRequest
0 голосов
/ 27 апреля 2011

Я вызываю команду компилятора, но сообщения компилятора не отображаются последовательно в Eclipse Console View.

У меня есть метод launch (), реализованный так же, как первый блок кода thisвопрос ;У меня есть настройка строки командной строки, которую я использую для вызова метода DebugPlugin.exec ().Однако, в отличие от автора вопроса выше, моя выходная консоль Eclipse очень противоречива.T

Когда я вызываю команду, в консоли не выполняется никаких действий, и консоль продолжает отображать «Нет консоли для отображения в это время».Но после многократного вызова команды и активации различных консолей из раскрывающегося меню консоль иногда становится активной и отображается сообщение.

Я не совсем понимаю, как ведет себя затмение, и не уверен, как его решить.Эта проблема.Будем благодарны за любые комментарии и / или рекомендации.

Спасибо !!

- РЕДАКТИРОВАТЬ

Чтобы добавить дополнительную информацию, запуск внешнего процесса с использованием внешних инструментов работает нормально.Я добавляю процесс компиляции c:\path\myprocess.exe в поле Locations и файл для компиляции в поле Arguments в окне конфигурации внешних инструментов.Когда я запускаю его, все выходные данные отображаются нормально.Он просто не будет отображаться при программном запуске через класс LaunchConfigurationDelegate.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Наконец получил его на работу. Основное изменение, которое я сделал, - это мой MyLaunchConfigurationDelegate extension LaunchConfigurationDelegate вместо простой реализации ILaunchConfigurationDelegate. При запуске через отладчик метод launch () прошел путь, аналогичный внешнему процессу, который был запущен с помощью External Tools, когда MyLaunchConfigurationDelegate extended LaunchConfigurationDelegate.

Полагаю, это было отсутствие информации с моей стороны, но я не был уверен, какой частью кода было бы важнее поделиться.

Еще один фрагмент кода, который был удален, был:

IProcess dbgProcess = DebugPlugin.newProcess(launch, compilerProcess, "XVR Compiler", processAttributes);
...
launch.removeProcess(dbgProcess);

Я добавил его, пытаясь использовать другой подход при отладке этой проблемы, и это на самом деле вызвало больше проблем, удалив debugProcess до того, как он сможет отобразить вывод на консоль.

0 голосов
/ 27 апреля 2011

Может быть, попробуйте программно перенести консоль на передний план, посмотрите, поможет ли она:

* Bring the console to front.
 */
public static void showConsole() {
    Display.getDefault().asyncExec(new Runnable() {
        @Override
        public void run() {
            IWorkbenchWindow window = CUIPlugin.getActiveWorkbenchWindow();
            if (window != null) {
                IWorkbenchPage page = window.getActivePage();
                if (page != null) {
                    IViewPart consoleView =
                            page.findView(IConsoleConstants.ID_CONSOLE_VIEW);
                    if (consoleView == null) {
                        IWorkbenchPart activePart = page.getActivePart();
                        try {
                            consoleView =
                                    page.showView(IConsoleConstants.ID_CONSOLE_VIEW);
                        } catch (PartInitException pie) {
                            CUIPlugin.log(pie);
                        }
                        // restore focus stolen by the creation of the
                        // console
                        page.activate(activePart);
                    } else {
                        boolean bringToTop = true;
                        if (bringToTop) {
                            page.bringToTop(consoleView);
                        }
                    }
                }
            }
        }
    });
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...