【问题标题】:Putting Eclipse plugin on System classpath将 Eclipse 插件放在系统类路径上
【发布时间】:2010-12-08 09:39:48
【问题描述】:

我正在尝试反序列化位于插件 C 中的 A 类型对象。

虽然我的插件对具有 A 类型的插件 C 具有适当的依赖关系,并且还可以创建和实例化 A 类型的对象,但当我尝试对 A 类型的对象进行非理想化时,它会失败。

我相信的原因是实际进行反序列化的 java.io.* 类看不到类型 A。

我必须在插件 C 的清单中添加什么,以便系统类可以看到类型 A?

这是我得到的堆栈跟踪-

java.lang.ClassNotFoundException: com.chronon.sb.debug.model.TimeAndEventData 在 org.eclipse.osgi.internal.loader.BundleLoader.findClassInnal(BundleLoader.java:494) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:410) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:398) 在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:105) 在 java.lang.ClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClassInternal(未知来源) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(未知来源) 在 java.io.ObjectInputStream.resolveClass(未知来源) 在 java.io.ObjectInputStream.readNonProxyDesc(未知来源) 在 java.io.ObjectInputStream.readClassDesc(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readObject(未知来源) 在 com.chronon.sb.recorder.commons.CompressorUtil.decompressObj ect(CompressorUtil.java:53) 在 com.chronon.sb.recorder.commons.CompressorUtil.decompressObj (CompressorUtil.java:36) 在 com.chronon.sb.debug.core.dbManagers.Events.createBlock(甚至 ts.java:134) 在 com.chronon.sb.debug.core.dbManagers.Events.getThreadForTime (Events.java:108) 在 com.chronon.sb.debug.core.helpers.MethodCallHelper.(MethodCallHelper.java:62) 在 com.chronon.sb.debug.core.helpers.MiscHelper.getVeryFirstMet hod(MiscHelper.java:22) 在 com.placid.sb.browser.ui.startbrowse.StartBrowseJob$1.run(StartBrowseJob.java:86) 在 org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5) 在 org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:134) 在 org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java a:3855) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3476) 在 org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2405) 在 org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) 在 org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 21) 在 org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) 在 org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332) 在 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:493) 在 org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149) 在 org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113) 在 org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:194) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:368) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 559) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) 在 org.eclipse.equinox.launcher.Main.run(Main.java:1311) 在 org.eclipse.equinox.launcher.Main.main(Main.java:1287)

【问题讨论】:

    标签: serialization eclipse-plugin classpath osgi


    【解决方案1】:

    阅读伙伴类加载器(一些更详细的信息是here,尤其是关于内置伙伴策略的部分)。

    简短的回答是:您需要一个清单条目

     Eclipse-BuddyPolicy: boot
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2023-03-20
      • 2011-05-02
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2012-03-14
      相关资源
      最近更新 更多