2014-01-29 45 views
0

我目前正試圖通過使用日食工作區 和項目抽象來訪問我的eclipse項目,但我很快就失敗了。IllegalStateException:工作區關閉,同時調用ResourcesPlugin.getWorkspace()

請看看下面的代碼:

public static void main(String[] args) throws Exception { 
    String[] equinoxArgs = { "-debug", "-data", "C:\\dev\\build\\workspace" }; 
    EclipseStarter.startup(equinoxArgs, null); 
    IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
    System.out.println(workspace); 
} 

如果我執行它,我得到:

Exception in thread "main" java.lang.IllegalStateException: Workspace is closed. 
    at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:399) 
    at de.jaculon.samples.osgi.OsgiSample.main(OsgiSample.java:21) 

有誰知道如何解決這一問題?

感謝您的幫助。

回答

1

EclipseStarter不初始化Eclipse工作區。

要運行headless Eclipse應用程序,您必須定義一個在插件中實現org.eclipse.equinox.app.IApplication的類。

plugin.xml定義的應用程序:

<extension 
    id="app-id" 
    point="org.eclipse.core.runtime.applications"> 
    <application 
     cardinality="singleton-global" 
     thread="main" 
     visible="true"> 
    <run 
      class="application class"> 
    </run> 
    </application> 
</extension> 

和運行應用程序

java -jar plugins/org.eclipse.equinox.launcher_xxx.jar -application application-id -debug -data datapath