Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-core-dev] ClassCircularityError

The bug is something serious because I couldn't track it down to a usable
test case. It may be a possible design leak. But I'm not sure if it is an
Eclipse bug or a bug caused by our misunderstanding of the Eclipse boot
process.

We get a ClassCircularityError when starting the Workbench under certain
conditions. This is repeatable.

basis

(1) PlugIn A that introduces an extendable adapter mechanisme for its model
by extension points. This adapters are loaded using the class loader of
PlugIn A
(2) PlugIn B that defines adapters using this extention points for model
objects of PlugIn A.

No Error until here. This concept works very good with different kind of
adapters.

(3) PlugIn A defines an abstract base class "AbstractEditorInput", which
implements org.eclipse.ui.IEditorInput.
(4) PlugIn B defines a concrete class extending "AbstractEditorInput" and
registers this class via the extension point for a specific model object.
This class is used as IEditorInput for the editor defined in PlugIn B, too.

Still no error. Works quite well. The editor is build using GEF and our
custom IEditorInput was necessary to access the model object, which isn't
always a real file. But the Editor is usable via FileEditorInput, too.

On a regualary startup PlugIn A+B gets activated. During activation of
PlugIn A (PluginA#starup() method) it reads the extension points and loads
the classes. This works normally ok.

Now the problem. 

When the workbench is closed and an Editor is left opened, it will be
restored next startup. But I couldn't be restored because our plugins get
deactivated because PlugIn A throws the CCError during loading of the
"AbstractEditorInput" class.

We think this is caused because of differnt class loaders or an irregularity
in the class loaders but we havn't got an idea. Thus, I'm posting our
problem to this dev-list.

Is there anyone who can help us finding the problem?

Thanks, Gunnar


PS: I found 2 different stack traces.

java.version=1.4.1-beta
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Command-line arguments: -dev bin -data E:\eclipse\runtime-workspace -debug
file:y:\rnd_beehive_source_eclipse_vob\plugins\.metadata\.plugins\org.eclips
e.pde.core\.options -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.core.runtime 4 2 Sep 24, 2002 10:31:50.257
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.core.runtime".
!STACK 0
java.lang.ClassCircularityError:
com/intershop/beehive/eclipse/core/common/BeehiveEditorInput
	at java.lang.ClassLoader.defineClass0(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
	at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:112)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ClassElement.<init>
(ClassElement.java:37)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.BElementRefElement.
<init>(BElementRefElement.java:24)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.Adapter.<init>(Adap
ter.java:71)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.hand
leTag(ElementManager.java:199)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.<ini
t>(ElementManager.java:163)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.getI
nstance(ElementManager.java:220)
	at
com.intershop.beehive.eclipse.BeehivePlugin.startup(BeehivePlugin.java:497)
	at
org.eclipse.core.internal.plugins.PluginDescriptor$1.run(PluginDescriptor.ja
va:691)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivatio
n(PluginDescriptor.java:703)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation(Plugin
Descriptor.java:183)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin(PluginCla
ssLoader.java:58)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:136)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0(DelegatingU
RLClassLoader.java:744)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadC
lass(DelegatingURLClassLoader.java:70)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisit
es(DelegatingURLClassLoader.java:429)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:758)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
	at java.lang.ClassLoader.defineClass0(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
	at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:112)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
	at
com.intershop.beehive.eclipse.vpm.PipelineEditor.setInput(PipelineEditor.jav
a:303)
	at
com.intershop.beehive.eclipse.vpm.PipelineEditor.init(PipelineEditor.java:23
8)
	at
org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:556)
	at
org.eclipse.ui.internal.EditorManager.openInternalEditor(EditorManager.java:
607)
	at
org.eclipse.ui.internal.EditorManager.access$6(EditorManager.java:603)
	at
org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:833)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at org.eclipse.core.runtime.Platform.run(Platform.java:416)
	at
org.eclipse.ui.internal.EditorManager.busyRestoreEditor(EditorManager.java:7
87)
	at
org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:780)
	at
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:66)
	at
org.eclipse.ui.internal.EditorManager.restoreEditor(EditorManager.java:776)
	at
org.eclipse.ui.internal.EditorManager.restoreState(EditorManager.java:693)
	at
org.eclipse.ui.internal.WorkbenchPage.restoreState(WorkbenchPage.java:1898)
	at
org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:10
72)
	at
org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1158)
	at org.eclipse.ui.internal.Workbench.access$7(Workbench.java:1133)
	at org.eclipse.ui.internal.Workbench$6.run(Workbench.java:811)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at org.eclipse.core.runtime.Platform.run(Platform.java:416)
	at
org.eclipse.ui.internal.Workbench.openPreviousWorkbenchState(Workbench.java:
763)
	at org.eclipse.ui.internal.Workbench.init(Workbench.java:577)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:1232)
	at
org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.jav
a:775)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:432)
	at EclipseRuntimeLauncher.main(EclipseRuntimeLauncher.java:24)
!SESSION Sep 24, 2002 10:34:51.363
---------------------------------------------


!ENTRY org.eclipse.core.runtime 4 2 Sep 24, 2002 11:18:37.888
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.core.runtime".
!STACK 0
java.lang.ClassCircularityError:
com/intershop/beehive/eclipse/core/common/BeehiveEditorInput
	at java.lang.ClassLoader.defineClass0(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
	at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:112)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ClassElement.<init>
(ClassElement.java:37)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.BElementRefElement.
<init>(BElementRefElement.java:24)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.Adapter.<init>(Adap
ter.java:71)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.hand
leTag(ElementManager.java:200)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.<ini
t>(ElementManager.java:164)
	at
com.intershop.beehive.eclipse.core.common.extensionpoint.ElementManager.getI
nstance(ElementManager.java:221)
	at
com.intershop.beehive.eclipse.BeehivePlugin.startup(BeehivePlugin.java:497)
	at
org.eclipse.core.internal.plugins.PluginDescriptor$1.run(PluginDescriptor.ja
va:691)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivatio
n(PluginDescriptor.java:703)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation(Plugin
Descriptor.java:183)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin(PluginCla
ssLoader.java:58)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:136)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0(DelegatingU
RLClassLoader.java:744)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadC
lass(DelegatingURLClassLoader.java:70)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisit
es(DelegatingURLClassLoader.java:429)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:758)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:140)
	at
com.intershop.beehive.eclipse.vpm.VPMPlugin.startup(VPMPlugin.java:309)
	at
org.eclipse.core.internal.plugins.PluginDescriptor$1.run(PluginDescriptor.ja
va:691)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivatio
n(PluginDescriptor.java:703)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation(Plugin
Descriptor.java:183)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin(PluginCla
ssLoader.java:58)
	at
org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf(Plu
ginClassLoader.java:136)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:750)
	at
org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass(Delegating
URLClassLoader.java:730)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension
(PluginDescriptor.java:127)
	at
org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension
(PluginDescriptor.java:164)
	at
org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExten
sion(ConfigurationElement.java:102)
	at
org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:116)
	at
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:66)
	at
org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java
:113)
	at
org.eclipse.ui.internal.EditorManager$3.run(EditorManager.java:617)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at org.eclipse.core.runtime.Platform.run(Platform.java:416)
	at
org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:615)
	at
org.eclipse.ui.internal.EditorManager.openInternalEditor(EditorManager.java:
605)
	at
org.eclipse.ui.internal.EditorManager.access$6(EditorManager.java:603)
	at
org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:833)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at org.eclipse.core.runtime.Platform.run(Platform.java:416)
	at
org.eclipse.ui.internal.EditorManager.busyRestoreEditor(EditorManager.java:7
87)
	at
org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:780)
	at
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:66)
	at
org.eclipse.ui.internal.EditorManager.restoreEditor(EditorManager.java:776)
	at
org.eclipse.ui.internal.EditorManager.restoreState(EditorManager.java:693)
	at
org.eclipse.ui.internal.WorkbenchPage.restoreState(WorkbenchPage.java:1898)
	at
org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:10
72)
	at
org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1158)
	at org.eclipse.ui.internal.Workbench.access$7(Workbench.java:1133)
	at org.eclipse.ui.internal.Workbench$6.run(Workbench.java:811)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java
:839)
	at org.eclipse.core.runtime.Platform.run(Platform.java:416)
	at
org.eclipse.ui.internal.Workbench.openPreviousWorkbenchState(Workbench.java:
763)
	at org.eclipse.ui.internal.Workbench.init(Workbench.java:577)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:1232)
	at
org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.jav
a:775)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:432)
	at EclipseRuntimeLauncher.main(EclipseRuntimeLauncher.java:24)


Back to the top