2010-11-01 142 views
1

我有這個非常不尋常的問題。 我開發了這個插件屬性頁。當我作爲Eclipse應用程序運行插件時,它完美地工作,但是當我將其導出並將其複製到eclipse/dropin文件夾時,我得到了ClassNotFoundException。不尋常的eclipse插件問題

我的MANIFEST.MF看起來是這樣的:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: SpectrumPlugin 
Bundle-SymbolicName: sinaut.spectrum.plugin; singleton:=true 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: sinaut.spectrum.plugin.activator.SpectrumPluginActivator 
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.0", 
org.eclipse.ui;bundle-version="3.4.2", 
org.eclipse.core.resources;bundle-version="3.4.2", 
org.eclipse.ui.console;bundle-version="3.3.1" 
Bundle-ActivationPolicy: lazy 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Bundle-ClassPath: JARs/sshfactory.jar, 
. 
Import-Package: org.eclipse.ui.console 
Export-Package: com.jscape.a, 
sinaut.spectrum.plugin.activator, 
sinaut.spectrum.plugin.ftp, 
sinaut.spectrum.plugin.preferences, 
sinaut.spectrum.plugin.remotebuild, 
sinaut.spectrum.plugin.ssh 

plugin.xml中看起來是這樣的:

<plugin> 

    <extension 
     point="org.eclipse.ui.preferencePages"> 
     <page 
     id="BildPreferencePage" 
      name="Bild Preferences" 
      class="sinaut.spectrum.plugin.preferences.BildPreferencePage" 

      > 
     </page> 
    </extension> 
    <extension 
     point="org.eclipse.core.runtime.preferences"> 
     <initializer 
      class="sinaut.spectrum.plugin.preferences.PreferenceInitializer"> 
     </initializer> 
    </extension> 
    <extension 
     point="org.eclipse.ui.actionSets"> 
     <actionSet 
      id="sinaut.spectrum.plugin.RemoteBildActionSet" 
      label="RemoteBildActionSet" 
      visible="true"> 
     <menu 
       id="sinaut.spectrum.plugin.RemoteBuildMenu" 
       label="Remote Build Menu"> 
      <groupMarker 
        name="content"> 
      </groupMarker> 
      <separator 
        name="additions"> 
      </separator> 
     </menu> 
     <action 
       class="sinaut.spectrum.plugin.remotebuild.RemoteBuild" 
       icon="/icons/rb.gif" 
       id="sinaut.spectrum.plugin.RemoteBuild" 
       label="Remote Build" 
       state="true" 
       style="push" 
       toolbarPath="Normal/additions"> 
     </action> 
     </actionSet> 
    </extension> 

</plugin> 

當我嘗試啓動該屬性頁"Unable to create the selected preference page.sinaut.spectrum.plugin.preferences.BildPreferencePage"我得到這個消息,與此堆棧跟蹤:

java.lang.ClassNotFoundException: sinaut.spectrum.plugin.preferences.BildPreferencePage 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483) 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399) 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387) 
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:315) 
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227) 
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274) 
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160) 
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:867) 
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) 
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51) 
at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:267) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:263) 
at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode.createPage(WorkbenchPreferenceNode.java:47) 
at org.eclipse.jface.preference.PreferenceDialog.createPage(PreferenceDialog.java:1306) 
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.createPage(FilteredPreferenceDialog.java:385) 
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1197) 
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:682) 
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:702) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698) 
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842) 
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
at org.eclipse.core.runtime.Platform.run(Platform.java:880) 
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48) 
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) 
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840) 
at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153) 
at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178) 
at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250) 
at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244) 
at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418) 
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133) 
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036) 
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) 
at org.eclipse.jface.window.Window.open(Window.java:801) 
at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65) 
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) 
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583) 
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500) 
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:1158) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200) 
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) 
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:386) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1236) 

它一定是愚蠢的,但我只是不能看到它。 如果有人能幫助我。我一直堅持這個小時。

回答

0

啓動下面的說法

-console 

日食然後,使用診斷,看看找到你的插件標識在OSGi控制檯像

ss sinaut.spectrum.plugin 

最後爲什麼你的插件不能得到解決

diag <id found by ss command> 

並嘗試啓動它以查看激活器中是否有任何錯誤

start <id> 
+0

當我執行ss sinaut.spectrum.plugin命令時,我收到以下消息:框架已啓動。 id State Bundle 沒有id:/ – Nezzit 2010-11-02 08:33:29

+0

看起來你的插件沒有被OSGi安裝,怎麼樣嘗試eclipse.exe -clean或者在OSGi的控制檯上手動安裝插件。 – Kane 2010-11-02 09:08:07

+0

是的,激活者有什麼問題......只是無法弄清楚什麼。我已經手動安裝插件,當我啓動它時,我得到BundleException:激活器... SpectrumPluginActivator捆綁sinautt.spectrum.plugin是無效的...我檢查build.properties文件和類本身,並且一切似乎都很好。非常感謝你。 – Nezzit 2010-11-02 09:49:34