Community
Participate
Working Groups
I changed the default JDK from 1.4 for 1.5 and got the following NPE Thread [org.eclipse.jdt.internal.ui.text.JavaReconciler] (Suspended (exception NullPointerException)) CancelableNameEnvironment(SearchableEnvironment).find(String, String) line: 103 CancelableNameEnvironment(SearchableEnvironment).findType(char[], char[][]) line: 195 CancelableNameEnvironment.findType(char[], char[][]) line: 45 LookupEnvironment.askForType(PackageBinding, char[]) line: 116 LookupEnvironment.getType(char[][]) line: 587 ClassScope(Scope).getJavaLangEnum() line: 1901 ClassScope.connectEnumSuperclass() line: 743 ClassScope.connectSuperclass() line: 710 ClassScope.connectTypeHierarchy() line: 852 CompilationUnitScope.connectTypeHierarchy() line: 243 LookupEnvironment.completeTypeBindings() line: 192 CompilationUnitProblemFinder(Compiler).beginToCompile(ICompilationUnit[]) line: 307 CompilationUnitProblemFinder(Compiler).resolve(CompilationUnitDeclaration, ICompilationUnit, boolean, boolean, boolean) line: 546 CompilationUnitProblemFinder(Compiler).resolve(ICompilationUnit, boolean, boolean, boolean) line: 610 CompilationUnitProblemFinder.process(CompilationUnitDeclaration, ICompilationUnit, char[], Parser, WorkingCopyOwner, IProblemRequestor, boolean, IProgressMonitor) line: 165 CompilationUnitProblemFinder.process(ICompilationUnit, char[], WorkingCopyOwner, IProblemRequestor, boolean, IProgressMonitor) line: 213 ReconcileWorkingCopyOperation.executeOperation() line: 78 ReconcileWorkingCopyOperation(JavaModelOperation).run(IProgressMonitor) line: 700 ReconcileWorkingCopyOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 739 CompilationUnit.reconcile(int, boolean, WorkingCopyOwner, IProgressMonitor) line: 1105 JavaReconcilingStrategy.reconcile(boolean) line: 91 JavaReconcilingStrategy.reconcile(IRegion) line: 133 JavaCompositeReconcilingStrategy(CompositeReconcilingStrategy).reconcile(IRegion) line: 86 JavaCompositeReconcilingStrategy.reconcile(IRegion) line: 96 JavaReconciler(MonoReconciler).process(DirtyRegion) line: 75 JavaReconciler.process(DirtyRegion) line: 318 AbstractReconciler$BackgroundThread.run() line: 204 Variable view lools like this= CancelableNameEnvironment (id=26138580) checkAccessRestrictions= true monitor= NullProgressMonitor (id=26138716) nameLookup= NameLookup (id=26138724) packageFragmentRoots= IPackageFragmentRoot[9] (id=26138764) packageFragments= HashtableOfArrayToObject (id=26138772) rootToResolvedEntries= null timeSpentInSeekTypesInSourcePackage= 0 unitsToLookInside= HashMap (id=26138780) project= JavaProject (id=26138732) searchScope= JavaSearchScope (id=26138740) unitToSkip= null
Looks like the JavaElementInfo#pathToResolvedEntries field was reset to null while the NameLookup was being created. JavaProjectElementInfo#resetCaches() should be synchronized to avoid such a scenario.
*** Bug 81122 has been marked as a duplicate of this bug. ***
Moved the code that creates a NameLookup to JavaProjectElementInfo#newNameLookup and synchronized this method as well as resetCaches.
Verified in I20050214-0927