开发者

Putting Eclipse plugin on System classpath

I am trying to desrialize an object of type A located in plugin C.

Although my plugin has the proper dependency on plugin C which has type A and can also create and instantiate an object of type A, when I try to desiralize an object of type A, it fails.

The reason I believe is that the java.io.* classes which are actually doing the deserialization cannot see type A.

What do I have to put in the manifest of plugin C so that the system classes can see type A?

Here is a stack trace I am getting-

java.lang.ClassNotFoundException: com.chronon.sb.debug.model.TimeAndEventData at org.eclipse.osgi.internal.loader.BundleLoader.findClassInter nal(BundleLoader.java:494) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:410) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:398) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:105) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.io.ObjectInputStream.resolveClass(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at com.chronon.sb.recorder.comm开发者_JS百科ons.CompressorUtil.decompressObj ect(CompressorUtil.java:53) at com.chronon.sb.recorder.commons.CompressorUtil.decompressObj (CompressorUtil.java:36) at com.chronon.sb.debug.core.dbManagers.Events.createBlock(Even ts.java:134) at com.chronon.sb.debug.core.dbManagers.Events.getThreadForTime (Events.java:108) at com.chronon.sb.debug.core.helpers.MethodCallHelper.(MethodCallHelper.java:62) at com.chronon.sb.debug.core.helpers.MiscHelper.getVeryFirstMet hod(MiscHelper.java:22) at com.placid.sb.browser.ui.startbrowse.StartBrowseJob$1.run(St artBrowseJob.java:86) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 21) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:194) 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(EclipseS tarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179) 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: 559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287)


Read up on buddy classloaders (some more detailed information is here, especially the section about built-in buddy policies).

The short answer is: you need a MANIFEST-entry

 Eclipse-BuddyPolicy: boot
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜