Community
Participate
Working Groups
N20050505 I opened a type hierarchy on org.eclipse.core.expressions.Expressions and got an error dialog with a corresponding exception in the log. java.lang.ArrayIndexOutOfBoundsException: 0 at org.eclipse.jdt.internal.core.util.BindingKeyParser.parseInnerType (BindingKeyParser.java:629) at org.eclipse.jdt.internal.core.util.BindingKeyParser.parse (BindingKeyParser.java:527) at org.eclipse.jdt.internal.core.util.BindingKeyParser.parse (BindingKeyParser.java(Inlined Compiled Code)) at org.eclipse.jdt.core.BindingKey.isParameterizedType(BindingKey.java(Inlined Compiled Code)) at org.eclipse.jdt.ui.JavaElementLabels.getTypeLabel(JavaElementLabels.java (Compiled Code)) at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java (Compiled Code)) at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java (Inlined Compiled Code)) at org.eclipse.jdt.ui.JavaElementLabels.getTextLabel(JavaElementLabels.java (Compiled Code)) at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getText (JavaUILabelProvider.java(Compiled Code)) at org.eclipse.jdt.internal.ui.typehierarchy.HierarchyLabelProvider.getText (HierarchyLabelProvider.java:126) at org.eclipse.jface.viewers.DecoratingLabelProvider.getText (DecoratingLabelProvider.java(Inlined Compiled Code)) at org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel (DecoratingLabelProvider.java(Compiled Code)) at org.eclipse.jface.viewers.StructuredViewer.buildLabel(StructuredViewer.java (Compiled Code)) at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java(Compiled Code)) at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run (AbstractTreeViewer.java(Inlined Compiled Code)) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java (Inlined Compiled Code)) at org.eclipse.core.runtime.Platform.run(Platform.java(Inlined Compiled Code)) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java(Inlined Compiled Code)) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java(Inlined Compiled Code)) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem (AbstractTreeViewer.java(Compiled Code)) at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run (StructuredViewer.java(Inlined Compiled Code)) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java (Inlined Compiled Code)) at org.eclipse.core.runtime.Platform.run(Platform.java(Inlined Compiled Code)) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java(Inlined Compiled Code)) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java(Inlined Compiled Code)) at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java (Compiled Code)) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem (AbstractTreeViewer.java:535) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run (AbstractTreeViewer.java:514) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java(Compiled Code)) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren (AbstractTreeViewer.java:494) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel (AbstractTreeViewer.java:1120) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel (AbstractTreeViewer.java:1129) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel (AbstractTreeViewer.java:1129) at org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel (AbstractTreeViewer.java:658) at org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel (AbstractTreeViewer.java:641) at org.eclipse.jdt.internal.ui.typehierarchy.TraditionalHierarchyViewer.updateCont ent(TraditionalHierarchyViewer.java:61) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart$11.run (TypeHierarchyViewPart.java:1090) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java(Compiled Code)) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.updateHierarchy Viewer(TypeHierarchyViewPart.java:1093) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.updateInput (TypeHierarchyViewPart.java:541) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.setInputElement (TypeHierarchyViewPart.java:486) at org.eclipse.jdt.internal.ui.util.OpenTypeHierarchyUtil.openInViewPart (OpenTypeHierarchyUtil.java:98) at org.eclipse.jdt.internal.ui.util.OpenTypeHierarchyUtil.open (OpenTypeHierarchyUtil.java:75) at org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction.run (OpenTypeHierarchyAction.java:181) at org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction.run (OpenTypeHierarchyAction.java:143) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun (SelectionDispatchAction.java:226) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run (SelectionDispatchAction.java:198) at org.eclipse.jface.action.Action.runWithEvent(Action.java:996) at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:182) at org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute (LegacyHandlerWrapper.java:108) at org.eclipse.core.commands.Command.execute(Command.java:312) at org.eclipse.core.commands.ParameterizedCommand.execute (ParameterizedCommand.java:396) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand (WorkbenchKeyboard.java:452) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press (WorkbenchKeyboard.java:722) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent (WorkbenchKeyboard.java:766) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings (WorkbenchKeyboard.java:543) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3 (WorkbenchKeyboard.java:486) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent (WorkbenchKeyboard.java:110) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java(Compiled Code)) at org.eclipse.swt.widgets.Display.filterEvent(Display.java(Inlined Compiled Code)) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Inlined Compiled Code)) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Compiled Code)) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java(Compiled Code)) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:879) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:875) at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1467) at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:3342) at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled Code)) at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled Code)) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java(Inlined Compiled Code)) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code)) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java(Compiled Code)) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1556) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:314) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103) at org.eclipse.core.internal.runtime.PlatformActivator$1.run (PlatformActivator.java:230) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:345) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:58) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:60) at java.lang.reflect.Method.invoke(Method.java:391) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:328) at org.eclipse.core.launcher.Main.basicRun(Main.java:272) at org.eclipse.core.launcher.Main.run(Main.java:974) at org.eclipse.core.launcher.Main.main(Main.java:950)
I cannot reproduce this problem. Do you have more details on the projects that are in your workspace (source vs binary, version number if checked out from CVS, etc...) ?
I can't reproduce this in N20050506.
Oops, I can reproduce. The hierarchy was on org.eclipse.core.expressions.Expression - *NOT* Expression*s* as originally indicated. I have the following plugins in source, checked out from HEAD. org.eclipse.jdt.doc.isv org.eclipse.platform-feature org.eclipse.releng org.eclipse.test.performance.win32 platform-ant-home platform-debug-home org.apache.ant org.eclipse.ant.core org.eclipse.ant.tests.core org.eclipse.ant.tests.ui org.eclipse.ant.ui org.eclipse.core.variables org.eclipse.debug.core org.eclipse.debug.ui org.eclipse.jdt.debug org.eclipse.jdt.debug.tests org.eclipse.jdt.debug.ui org.eclipse.jdt.launching org.eclipse.jdt.ui.examples.javafamily org.eclipse.platform.doc.isv org.eclipse.test.performance org.eclipse.ui.console org.eclipse.ui.externaltools
I made the same exception occurr twice, but it does not happen everytime. Not sure what the requirements are. However, while attempting to cause it to happen I ended up with what seems like a deadlock. I restarted my workbench with the hierachy for Expression open, which showed a background job restoring the type hierachy for Expression. I pressed "cancel" (in the progress view) and tried to open another type hierarchy on a different class. The UI seemed to block forever with a busy cursor. Had to kill Eclispe. I will attach the thread dump.
Created attachment 20783 [details] thread dump
*** Bug 93995 has been marked as a duplicate of this bug. ***
Thanks Darin. Fixed IndexBasedHierarchyBuilder#searchAllPossibleSubTypes(...) to use the characters between the last $ and the ".class" as the type name for a local or anonymous type (and not an empty name as it used to be). Added regression test TypeHierarchyTests#testAnonymousType7().
Verified for 3.1 M7 using build I20050509-2010 + jdt.core HEAD.