| Summary: | ClassCircularityError in DeclaritiveServices activate Method | ||
|---|---|---|---|
| Product: | [Eclipse Project] Equinox | Reporter: | Ed Costello <edward.costello> |
| Component: | Compendium | Assignee: | equinox.compendium-inbox <equinox.compendium-inbox> |
| Status: | RESOLVED DUPLICATE | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | edward.costello, s.boshev |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | Macintosh | ||
| OS: | Mac OS X - Carbon (unsup.) | ||
| Whiteboard: | |||
According to the plugin versions provided in "Build Identifier" section I think you are using earlier version of Eclipse 3.6 (Perhaps 3.6M6 ?) There were some fixes in DS concerning ClassCircularityError issues in 3.6RC1 (see bug #308021) There are even more sophisticated fixes in DS in Eclipse 3.6.1 (see bug#316780) Before going in deeper analysis on this issue, I would suggest you to switch to Eclipse 3.6.1 and see if there are still any ClassCircularityError issues in your case. Sorry about the confusing version, we're using Equinox stand alone so it's a little more difficult to determine exactly what eclipse version this corresponds to. I believe we're using 3.6M7. As there are further related fixes in 3.6.1 I'll see if we can upgrade. It seems this bug is duplicate of bug342613. *** This bug has been marked as a duplicate of bug 342613 *** |
Build Identifier: org.eclipse.equinox.registry=3.5.0.v20100301, org.eclipse.equinox.ds=1.2.0.v20100422-1745, org.eclipse.equinox.common=3.6.0.v20100315 Periodically I'm getting a ClassCircularityError thrown when an activate method of a DeclaritiveService is called by the framework. The error is reported for org/eclipse/core/runtime/IRegistryEventListener. The DeclaritiveService implementation indirectly references this interface. After debugging this appears to happen only when the service is being activated very early in the startup process. My working theory is that the org.eclipse.equinox.registry bundle containing the IRegistryEventListener is being activated by "Start Level Event Dispatcher" or similar thread related to bundle activation at the same time as the "Component Resolve Thread" activates the DeclaritiveService. I suspect that both of these threads are attempting to define the class at the same time resulting in the class circularity error. I have changed the Start Level of org.eclipse.equinox.common and org.eclipse.equinox.registry to ensure they start before org.eclipse.equinox.ds. In this scenario the error doesn't occur, this tends to lend weight to my theory. The error we're getting is: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:234) ... Caused by: java.lang.ClassCircularityError: org/eclipse/core/runtime/IRegistryEventListener at com.orchestral.dictionary.persistence.terminology.AggregateTerminologyActivator.activate(AggregateTerminologyActivator.java:29) This seems similar to https://bugs.eclipse.org/bugs/show_bug.cgi?id=316780 however we're not using lazy activation. Reproducible: Sometimes Steps to Reproduce: Because this is dependent on the order which Declarative Services this is not easily reproducible.