Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse控制台视图的输出不一致_Eclipse_Eclipse Plugin - Fatal编程技术网

Eclipse控制台视图的输出不一致

Eclipse控制台视图的输出不一致,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,我正在调用一个编译器命令,但是编译器消息在Eclipse控制台视图中的显示并不一致 我的启动方法的实现方式与 ; 我使用命令行字符串设置调用DebugPlugin.exec方法。然而,与上述问题的作者不同,我的Eclipse控制台的输出非常不一致。T 当我调用该命令时,控制台中没有任何活动,此时控制台继续显示“无需显示的控制台”。但在多次调用命令并从下拉菜单激活不同的控制台后,控制台偶尔会变为活动状态,并显示消息 我对eclipse的行为感到困惑,不知道如何解决这个问题。如有任何意见和/或建议,

我正在调用一个编译器命令,但是编译器消息在Eclipse控制台视图中的显示并不一致

我的启动方法的实现方式与 ; 我使用命令行字符串设置调用DebugPlugin.exec方法。然而,与上述问题的作者不同,我的Eclipse控制台的输出非常不一致。T

当我调用该命令时,控制台中没有任何活动,此时控制台继续显示“无需显示的控制台”。但在多次调用命令并从下拉菜单激活不同的控制台后,控制台偶尔会变为活动状态,并显示消息

我对eclipse的行为感到困惑,不知道如何解决这个问题。如有任何意见和/或建议,将不胜感激

谢谢

- 编辑


要添加更多信息,可以使用外部工具运行外部流程。我在“外部工具配置”窗口的“位置”字段中添加了编译器进程c:\path\myprocess.exe,并在“参数”字段中添加了要编译的文件。当我运行它时,所有输出都显示良好。当我通过LaunchConfigurationDelegate类以编程方式运行它时,它不会显示。

也许可以尝试以编程方式将控制台置于前端,看看它是否有帮助:

* 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);
                        }
                    }
                }
            }
        }
    });
} 

终于成功了。我所做的主要更改是让我的MyLaunchConfigurationDelegate扩展LaunchConfigurationDelegate,而不仅仅是实现ILaunchConfigurationDelegate。通过调试器观察时,启动方法的代码路径与外部进程的代码路径类似,在MyLaunchConfigurationDelegate扩展LaunchConfigurationDelegate时,外部进程通过外部工具启动

我想这是因为我缺少信息,但我不确定代码的哪一部分更重要

另一段被删除的代码是:

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

我在尝试使用不同的方法调试此问题时添加了它,实际上,在调试进程有机会向控制台显示输出之前删除它会导致更多问题。

谢谢。我尝试了一下,但findView返回的控制台是consoleView,此时没有要显示的控制台。标题也许,输出甚至没有正确地定向到控制台?或者,没有创建控制台?如果我创建自己的控制台页面,如何将我的输出从DebugPlugin.exec定向到控制台?对此的另一个评论是,外部工具和我的代码之间唯一的主要区别是,外部工具运行的实例在单独的工作线程上运行,而我的代码在主线程中运行。