2011-04-27 35 views
0

我正在調用一個編譯器命令,但編譯器消息沒有一直顯示在Eclipse控制檯視圖中。到Eclipse控制檯的輸出不一致查看

我有我的launch()方法實現的方式與第一個代碼塊 this question;我有用於調用DebugPlugin.exec()方法的命令行字符串設置。但是,與上述問題的作者不同,我的輸出Eclipse控制檯非常不一致。 T

當我調用該命令並且控制檯繼續顯示「No console to display at this time」時,控制檯中沒有任何活動。但在多次調用命令並從下拉菜單中激活不同的控制檯後,控制檯偶爾會變爲活動狀態並顯示消息。

我很困惑如何日食行爲和不知道如何解決這個問題。任何意見和/或建議,將不勝感激。

謝謝!

- 編輯

要添加一些更多的信息,使用外部工具工作正常運行的外部進程。我在Locations字段中添加編譯器進程c:\path\myprocess.exe,並在外部工具配置窗口中的Arguments字段中編譯要編譯的文件。當我運行它時,所有輸出都顯示正常。當我以編程方式通過LaunchConfigurationDelegate類運行它時,它不會顯示。

+0

對此的另一種評論是,外部工具和我的代碼之間唯一的主要區別是,由外部工具運行的實例在單獨的工作線程上運行,而我的代碼在主線程中運行。 – blissfool 2011-04-30 07:05:29

回答

0

終於得到它的工作。我所做的主要改變是讓我的MyLaunchConfigurationDelegate擴展LaunchConfigurationDelegate而不是僅僅實現ILaunchConfigurationDelegate。當通過調試器觀察時,launch()方法與MyLaunchConfigurationDelegate擴展爲LaunchConfigurationDelegate時通過External Tools啓動的外部進程類似的代碼路徑。

我想這是缺乏我的信息,但我不確定代碼的哪一部分更重要的分享。

另一段代碼被刪除了:

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

我在嘗試調試這個問題,不同的方法添加它,它實際上是通過去除debugProcess有機會顯示輸出之前引起更多的問題到控制檯。

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); 
         } 
        } 
       } 
      } 
     } 
    }); 
} 
+0

謝謝。我給它一個鏡頭,但由findView()返回的控制檯是consoleView,並且「此時沒有控制檯顯示」。標題。也許,輸出甚至沒有被正確引導到控制檯?或者,沒有控制檯正在創建?如果我創建自己的控制檯頁面,如何將我的輸出從「DebugPlugin.exec()」指向我的控制檯? – blissfool 2011-04-27 07:07:52