我正在调用编译器命令,但编译器消息不会始终显示在Eclipse控制台视图中。
我的launch()方法实现方式与第一个代码块相同 this question;我有命令行字符串设置,我用它来调用DebugPlugin.exec()方法。但是,与上述问题的作者不同,我的输出Eclipse控制台非常不一致。 Ť
当我调用命令时控制台中没有活动,并且控制台继续显示“此时无法显示控制台”。但是在从下拉菜单中调用命令很多时间并激活不同的控制台后,控制台偶尔会变为活动状态并显示消息。
我对日食的表现感到困惑,不知道如何解决这个问题。任何评论和/或建议将不胜感激。
谢谢!
- 修改
要添加更多信息,使用外部工具运行外部流程可以正常工作。我在c:\path\myprocess.exe
字段中添加编译器进程Locations
,并在外部工具配置窗口的Arguments
字段中编译该文件。当我运行它时,所有输出都显示正常。当我通过LaunchConfigurationDelegate
类以编程方式运行它时,它将无法显示。
答案 0 :(得分:0)
也许尝试以编程方式将控制台置于前面,看看是否有帮助:
* 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);
}
}
}
}
}
});
}
答案 1 :(得分:0)
终于开始工作了。我所做的主要更改是让MyLaunchConfigurationDelegate
扩展LaunchConfigurationDelegate
而不是仅实施ILaunchConfigurationDelegate
。通过调试器观察时,launch {)方法经历了与MyLaunchConfigurationDelegate
扩展LaunchConfigurationDelegate
时通过外部工具启动的外部进程类似的代码路径。
我想我的信息不足,但我不确定代码的哪一部分更重要。
删除的另一段代码是:
IProcess dbgProcess = DebugPlugin.newProcess(launch, compilerProcess, "XVR Compiler", processAttributes);
...
launch.removeProcess(dbgProcess);
我在尝试调试此问题的不同方法时添加了它,并且在它有机会向控制台显示输出之前删除了debugProcess实际上导致了更多问题。