2012-11-21 189 views
2

我正在編寫一個eclipse插件並且項目環境配置正確(我相信)。Eclipse插件開發問題

我能夠在沒有任何編譯時錯誤的情況下編譯解決方案。以下是調試解決方案時拋出異常的代碼片段。我確信所有必需的插件和外部罐子都已正確配置。

我已經嘗試了幾乎所有的方法,用戶在互聯網上建議,沒有任何工作。 (我甚至根據他們的建議更改了代碼)。

所以要求你讓我知道爲什麼我得到低於錯誤的原因,並建議替代方法。

public static IProject getCurrentSelectedProject() { 
     try { 
      IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
      IProject[] projects = workspace.getRoot().getProjects(); 
      for (int i = 0; i < projects.length; i++) { 
       IProject project = projects[i]; 
       if ((project.isOpen())) { 
        return project; 
       } 
      } 
     } catch (Throwable ex) { 
      ex.printStackTrace(); 
     } 
     return null; 

    } 

下面是我收到

java.lang.NoClassDefFoundError: org/eclipse/core/resources/ResourcesPlugin 
    at com.prithvi.editor.actions.UploadAction.getCurrentSelectedProject(UploadAction.java:81) 
    at com.prithvi.editor.actions.UploadAction.run(UploadAction.java:39) 
    at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251) 
    at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229) 
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) 
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) 
    at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411) 
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923) 
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1414) 
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.resources.ResourcesPlugin 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) 
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 33 more 
+1

ÿ我們的錯誤說Eclipse無法找到ResourcesPlugin類。您是否將org.eclipse.core.resources指定爲插件清單中的擴展? –

回答

4

當你啓動應用程序的錯誤,你必須要麼在插件將被加載(用自己的插件一起)啓動配置中指定,或如果您有產品配置,則只會啓動該產品配置中包含的插件和功能。

通常情況下,這很好地工作,因爲Eclipse可以識別不同插件之間的依賴關係,因此會自動添加所有必需的插件。然而,org.eclipse.core.resources是很少的例外之一,你必須手動添加那些3個loations之一:

  • 啓動配置
  • 或產品配置
  • 或你的插件的依賴(這是首選)
+1

我有同樣的問題。當我將'org.eclipse.core.resources'添加到啓動配置時,它不起作用,但是當我將它添加到它工作的插件的依賴項列表中時。奇怪。 – Chin

6

- >打開plugin.xml的 - >相關性選項卡 - >點擊添加 - >org.eclipse.core.resources