Community
Participate
Working Groups
I20070327-0800 While opening an old workspcae with the build mentioned I got the following NPE. java.lang.NullPointerException at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2587) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1878) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:202) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:717) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:4474) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:33) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2168) at org.eclipse.jdt.internal.core.JavaModelManager$9.run(JavaModelManager.java:2101) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2117) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1496) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1563) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2574) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1878) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:394) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:229) at org.eclipse.jdt.internal.core.Openable.openParent(Openable.java:420) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:218) at org.eclipse.jdt.internal.core.Openable.openParent(Openable.java:420) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:218) at org.eclipse.jdt.internal.core.Openable.openParent(Openable.java:420) at org.eclipse.jdt.internal.core.CompilationUnit.openParent(CompilationUnit.java:1102) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:218) at org.eclipse.jdt.internal.core.SourceRefElement.generateInfos(SourceRefElement.java:107) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:505) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:249) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:235) at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:153) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.restoreState(TypeHierarchyViewPart.java:1474) at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.createPartControl(TypeHierarchyViewPart.java:865) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:363) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:219) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:592) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:299) at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:531) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:179) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:394) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1208) at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1161) at org.eclipse.ui.internal.PartStack.updateContainerVisibleTab(PartStack.java:1608) at org.eclipse.ui.internal.PartStack.remove(PartStack.java:848) at org.eclipse.ui.internal.PartStack.replace(PartStack.java:893) at org.eclipse.ui.internal.PerspectiveHelper.removePart(PerspectiveHelper.java:1208) at org.eclipse.ui.internal.Perspective.hideView(Perspective.java:539) at org.eclipse.ui.internal.WorkbenchPage.hideView(WorkbenchPage.java:2225) at org.eclipse.ui.internal.ViewPane.doHide(ViewPane.java:212) at org.eclipse.ui.internal.PartStack.close(PartStack.java:518) at org.eclipse.ui.internal.PartStack.close(PartStack.java:501) at org.eclipse.ui.internal.PartStack$1.close(PartStack.java:119) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:81) at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:267) at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:276) at org.eclipse.ui.internal.presentations.r33.DefaultTabFolder.access$1(DefaultTabFolder.java:1) at org.eclipse.ui.internal.presentations.r33.DefaultTabFolder$1.closeButtonPressed(DefaultTabFolder.java:66) at org.eclipse.ui.internal.presentations.r33.PaneFolder.notifyCloseListeners(PaneFolder.java:602) at org.eclipse.ui.internal.presentations.r33.PaneFolder$3.close(PaneFolder.java:190) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2142) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:312) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3673) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2361) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2325) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:101) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:152) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:359) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:174) 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:476) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:416) at org.eclipse.equinox.launcher.Main.run(Main.java:1141)
Is it possible to get a copy of this workspace?
Looking at the code, the NPE occurs because one of the entries returned by IClasspathContainer#getClasspathEntries() is null. Unfortunately, without the workspace it is impossible to know which container is guilty.
We should however add a null check in our code, and log the fact that the initializer is misbehaving.
(In reply to comment #3) > We should however add a null check in our code, and log the fact that the > initializer is misbehaving. Entered bug 180169 for adding the protection.
Protection has been added. Such case should now be logged only. Please reopen if you can provide the workspace.
I have a workspace that does this when you add all of the plug-ins in the SDK to the java search - unfortuneately it is 33M zipped. This is on build 20070327-0800 This is the trace from adding all java elements !ENTRY org.eclipse.core.resources 2 75 2007-04-05 18:14:33.335 !MESSAGE Errors during build. !SUBENTRY 1 org.eclipse.jdt.core 2 75 2007-04-05 18:14:33.335 !MESSAGE Errors running builder 'Java Builder' on project 'External Plug-in Libraries'. !SUBENTRY 1 org.eclipse.jdt.core 2 75 2007-04-05 18:14:33.335 !MESSAGE java.lang.NullPointerException encountered while running Java Builder. !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2587) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1878) at org.eclipse.jdt.internal.core.JavaProject.computeExpandedClasspath(JavaProject.java:462) at org.eclipse.jdt.internal.core.JavaProject.getExpandedClasspath(JavaProject.java:1467) at org.eclipse.jdt.internal.core.builder.NameEnvironment.computeClasspathLocations(NameEnvironment.java:91) at org.eclipse.jdt.internal.core.builder.NameEnvironment.<init>(NameEnvironment.java:39) at org.eclipse.jdt.internal.core.builder.JavaBuilder.initializeBuilder(JavaBuilder.java:570) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:166) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:163) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:248) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:251) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:307) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:339) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) And this is the one from shutting down !ENTRY org.eclipse.ui.ide 2 1 2007-04-05 18:14:36.085 !MESSAGE Problems occurred while trying to save the state of the workbench. !SUBENTRY 1 org.eclipse.core.resources 2 566 2007-04-05 18:14:36.085 !MESSAGE Problems occurred during save. !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt.get(HashtableOfObjectToInt.java:71) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.saveNewId(JavaModelManager.java:3368) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.saveClasspathEntry(JavaModelManager.java:3322) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.saveClasspathEntries(JavaModelManager.java:3317) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.saveContainers(JavaModelManager.java:3359) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.saveProjects(JavaModelManager.java:3423) at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersSaveHelper.save(JavaModelManager.java:3251) at org.eclipse.jdt.internal.core.JavaModelManager.saveVariablesAndContainers(JavaModelManager.java:3154) at org.eclipse.jdt.internal.core.JavaModelManager.saving(JavaModelManager.java:3466) at org.eclipse.core.internal.resources.SaveManager.executeLifecycle(SaveManager.java:335) at org.eclipse.core.internal.resources.SaveManager$1.run(SaveManager.java:160) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.resources.SaveManager.broadcastLifecycle(SaveManager.java:163) at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:969) at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:1824) at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor$3.run(IDEWorkbenchAdvisor.java:397) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
Increasing to major as I had to throw away the workspace after this happened a couple of times.
Asked Tod for his workspace.
Got Tod's workspace. Enabling the classpath resolution trace (debug/cpresolution=true) I see that the org.eclipse.pde.core.externalJavaSearch is misbehaving and returning a null classpath entry. Moving to PDE/UI.
Fixed. As we were sorting the classpath entries, the resulting array would have one less entry (null) if two jars had the same name.
Just to be clear, this occurs only in the 'External Libraries' project that keeps track of additional Java search scope libraries.