2013-10-23 48 views
0

我正在學習如何開發RCP應用程序。我需要做的一項任務是創建一個控制檯視圖。我已經做了一些搜索,我發現下面的代碼段,理應創建一個控制檯視圖:在Eclipse-Kepler(RCP)中創建控制檯視圖

@PostConstruct 
public void createComposite(Composite parent) { 
    MessageConsole myConsole = findConsole("abc");// CONSOLE_NAME); 
    MessageConsoleStream out = myConsole.newMessageStream(); 
    out.println("Hello from Generic console sample action"); 

    IWorkbench wb = PlatformUI.getWorkbench(); 
    IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); 
    IWorkbenchPage page = win.getActivePage(); 
    String id = IConsoleConstants.ID_CONSOLE_VIEW; 
    IConsoleView view = null; 
    try { 
     view = (IConsoleView) page.showView(id); 
    } catch (PartInitException e) { 
     e.printStackTrace(); 
    } 
    view.display(myConsole); 
} 

private MessageConsole findConsole(String name) { 
    ConsolePlugin plugin = ConsolePlugin.getDefault(); 
    IConsoleManager conMan = plugin.getConsoleManager(); 
    IConsole[] existing = conMan.getConsoles(); 
    for (int i = 0; i < existing.length; i++) 
     if (name.equals(existing[i].getName())) 
      return (MessageConsole) existing[i]; 
    // no console found, so create a new one 
    MessageConsole myConsole = new MessageConsole(name, null); 
    conMan.addConsoles(new IConsole[] { myConsole }); 
    return myConsole; 
} 

但我保留收到​​以下錯誤:

org.eclipse.e4.core.di.InjectionException :java.lang.IllegalStateException:工作臺尚未創建。

我試圖按照這篇文章中發佈的建議(http://waheedtechblog.blogspot.com/2011/11/javalangillegalstateexception-workbench.html),但無濟於事。

我的問題如下。

1)爲了解決上述錯誤,應該做些什麼?

2)鑑於Eclipse開發環境的豐富性,是否有更好的方式來用較少的編程工作實現同樣的事情(例如Toggle the view of the Console in a RCP application)?

對此的任何幫助將不勝感激。

+0

你在哪裏包括所有這些代碼?從錯誤中,你可以告訴它不是它應該在的地方。你在使用e4嗎?你應該嘗試其他教程,順便說一句。 – GGrec

+0

例如:http://www.eclipsezone.com/eclipse/forums/t49690.html – GGrec

回答

0

如果您想在RCP中運行現有的Eclipse工作臺代碼,您需要在應用程序中正確地獲取工作臺設置。

您可以根據現有的org.eclipse.ui.ide.workbench應用產品定義:

<extension id="product" point="org.eclipse.core.runtime.products"> 
    <product application="org.eclipse.ui.ide.workbench" name="name"/> 
    ... 

,或者您可以撥打

PlatformUI.createAndRunWorkbench(display, advisor); 

IApplication實現,但你必須做至少一些通過org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor完成工作以使事情正常工作。

+0

請您詳細說明第一種解決方案嗎?還基於以下引用(摘自http://waheedtechblog.blogspot.com/2011/11/javalangillegalstateexception-workbench.html)「java.lang.IllegalStateException:工作臺尚未創建 這實質上是一種競爭條件,並且可以通過表達對該包的顯式依賴或者將該包提升到比工作臺更高的起始級來解決。「,我的RCP是Eclipse 4應用程序。提前致謝。 – user2912941

+0

看看:http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def_extpt.htm –

+0

這裏是plugin.xml文件。但我仍然得到同樣的錯誤?謝謝! <?XML版本= 「1.0」 編碼= 「UTF-8」?> <分機 ID = 「產品」 點= 「org.eclipse.core.runtime.products」> <產品 名稱= 「com.lanterm.sigma」 application =「org.eclipse.e4.ui.workbench.swt。E4Application 「> <屬性 名稱=」 clearPersistedState 「 值= 」真「> <屬性 名稱= 」applicationCSS「 值=」 平臺:/plugin/com.lanterm.sigma/css/default.css 「> <屬性 名=」 APPNAME」 值= 「com.lanterm.sigma」> user2912941