Community
Participate
Working Groups
3.0M5 Found an NPE on some classes within our project when using the type hierarchy. THIS IS A DIFFERENT NPE than the other bugs registered in bugzilla. I did review all the othe bugs and none seemed to match. Notice the: Caused by: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding. getField(BinaryTypeBinding.java:346) at <snip> !ENTRY org.eclipse.jdt.ui 4 10001 Dec 11, 2003 15:29:36.06 !MESSAGE Internal Error!STACK 0 java.lang.reflect.InvocationTargetException at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:283) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:444) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:441) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1467) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle. ensureRefreshedTypeHierarchy(TypeHierarchyLifeCycle.java:122) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart. updateInput(TypeHierarchyViewPart.java:465) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart. setInputElement(TypeHierarchyViewPart.java:446) 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:175) at org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction.run(OpenTypeHierarchyAction. java:141) at org.eclipse.jdt.ui.actions.SelectionDispatchAction. dispatchRun(SelectionDispatchAction.java:196) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction. java:172) at org.eclipse.jface.action.Action.runWithEvent(Action.java:842) at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:212) at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:212) at org.eclipse.jface.action.ActionContributionItem. handleWidgetSelection(ActionContributionItem.java:542) at org.eclipse.jface.action.ActionContributionItem.access$4(ActionContributionItem. java:494) at org.eclipse.jface.action.ActionContributionItem$6. handleEvent(ActionContributionItem.java:466) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:967) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1839) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1619) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1381) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:237) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:47) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java: 858) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) 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:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:299) at org.eclipse.core.launcher.Main.run(Main.java:767) at org.eclipse.core.launcher.Main.main(Main.java:601) Caused by: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding. getField(BinaryTypeBinding.java:346) at org.eclipse.jdt.internal.compiler.lookup.Scope.findField(Scope.java:205) at org.eclipse.jdt.internal.compiler.lookup.MethodScope.findField(MethodScope. java:332) at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getBinding(BlockScope. java:428) at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference. resolveType(QualifiedNameReference.java:746) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend. java:196) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java: 445) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration. resolveStatements(AbstractMethodDeclaration.java:378) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration. resolveStatements(MethodDeclaration.java:137) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration. resolve(AbstractMethodDeclaration.java:355) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration. resolve(TypeDeclaration.java:839) at org.eclipse.jdt.internal.compiler.ast.AnonymousLocalTypeDeclaration. resolve(AnonymousLocalTypeDeclaration.java:124) at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression. resolveType(QualifiedAllocationExpression.java:294) at org.eclipse.jdt.internal.compiler.ast.FieldDeclaration. resolve(FieldDeclaration.java:193) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration. resolve(TypeDeclaration.java:823) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration. resolve(TypeDeclaration.java:889) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration. resolve(CompilationUnitDeclaration.java:271) at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver. resolve(HierarchyResolver.java:668) at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder. buildForProject(IndexBasedHierarchyBuilder.java:199) at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder. buildFromPotentialSubtypes(IndexBasedHierarchyBuilder.java:311) at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder. build(IndexBasedHierarchyBuilder.java:134) at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute(TypeHierarchy. java:319) at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh(TypeHierarchy. java:1230) at org.eclipse.jdt.internal.core.CreateTypeHierarchyOperation. executeOperation(CreateTypeHierarchyOperation.java:90) at org.eclipse.jdt.internal.core.JavaModelOperation.execute(JavaModelOperation. java:367) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation. java:706) at org.eclipse.jdt.internal.core.JavaElement.runOperation(JavaElement.java:523) at org.eclipse.jdt.internal.core.SourceType.newTypeHierarchy(SourceType.java: 594) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle. doHierarchyRefresh(TypeHierarchyLifeCycle.java:141) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle. access$0(TypeHierarchyLifeCycle.java:127) ato rg.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle$1. run(TypeHierarchyLifeCycle.java:115) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext. java:101)
Would you have steps to reproduce ?
I'd probably have to send the whole project, and I won't be able to due to commercial code base. it seems to be on classes that have a fairly long tree of children... Like only when it has to work fairly hard to add all the child info.
The problem is that the hierarchy resolver is created the BinaryTypeBinding & is choosing to NOT create its field/method bindings. Added protection so that these 2 fields are empty arrays instead of null. Need to examine if the hierarchy resolved needs fields/methods in this case.
Fixed HierarchyResolver to always build field and method bindings for binary types. Workaround by Kent is also good to keep. Added regression test TypeHierarchyTests.testBinarySubclass().
Verified for 3.0M7