Community
Participate
Working Groups
A nullpointer is thrown when attempting to save a java document when it contains an if statement like: if(config_data.length = 2) { Or rather, when assigning the value to an array-length instead of checking the length.
Could you please provide a complete test case? Build id? Do you have a .log file in your .metadata folder?
Try this sample: public class Example { String[] elements = null; public Example() { String s = "a, b, c, d"; elements = s.split(","); if(elements.length == 3) { // Change the == to = and try saving the document to reproduce the bug } } } Heres a clean .log: !SESSION Jul 09, 2004 16:38:33.968 --------------------------------------------- eclipse.buildId=I200406251208 java.version=1.4.2_03 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US !ENTRY org.eclipse.ui 4 4 Jul 09, 2004 16:38:33.968 !MESSAGE Bad extension specification !ENTRY de.sundn.prod.sunbow.webapp 4 0 Jul 09, 2004 16:38:33.968 !MESSAGE startup class must implement org.eclipse.ui.IStartup !ENTRY org.eclipse.jdt.core 4 4 Jul 09, 2004 16:38:51.390 !MESSAGE Exception occurred during problem detection: !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.Assignment.checkAssignment(Assignment.java:64) at org.eclipse.jdt.internal.compiler.ast.Assignment.resolveType(Assignment.java:169) at org.eclipse.jdt.internal.compiler.ast.Expression.resolveTypeExpecting(Expression.java:469) at org.eclipse.jdt.internal.compiler.ast.Assignment.resolveTypeExpecting(Assignment.java:182) at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:221) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:395) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:134) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:373) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:920) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:969) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:280) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:564) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:176) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:146) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:183) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:572) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:976) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:58) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1097) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1060) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:886) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$2.execute(CompilationUnitDocumentProvider.java:951) at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:126) at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:67) at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:91) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:105) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:73) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:63) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:440) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:699) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:3535) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1357) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1410) at org.eclipse.ui.internal.EditorManager$12.run(EditorManager.java:1160) at org.eclipse.ui.internal.EditorManager$10.run(EditorManager.java:1015) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:303) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:253) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:588) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:585) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1653) at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation(EditorManager.java:1021) at org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1165) at org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:2539) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:2551) at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:69) at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:141) at org.eclipse.ui.internal.commands.Command.execute(Command.java:132) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:471) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:889) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:930) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:548) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$2(WorkbenchKeyboard.java:496) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$1.handleEvent(WorkbenchKeyboard.java:261) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:740) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:795) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:805) at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1734) at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1730) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3067) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2970) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3338) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1467) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2429) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:254) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129) 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.core.launcher.Main.basicRun(Main.java:183) at org.eclipse.core.launcher.Main.run(Main.java:644) at org.eclipse.core.launcher.Main.main(Main.java:628) !ENTRY org.eclipse.jdt.core 4 4 Jul 09, 2004 16:38:53.296 !MESSAGE Exception occurred during problem detection: !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.Assignment.checkAssignment(Assignment.java:64) at org.eclipse.jdt.internal.compiler.ast.Assignment.resolveType(Assignment.java:169) at org.eclipse.jdt.internal.compiler.ast.Expression.resolveTypeExpecting(Expression.java:469) at org.eclipse.jdt.internal.compiler.ast.Assignment.resolveTypeExpecting(Assignment.java:182) at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:221) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:395) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:134) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:373) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:920) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:969) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:280) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:564) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:176) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:146) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:183) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:572) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:971) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:58) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1097) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:88) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:129) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:96) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:75) at org.eclipse.jdt.internal.ui.text.JavaReconciler.process(JavaReconciler.java:315) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:204)
The simple fix is to just add a check for a null declaringClass since the length field doesn't come from one. The smallest test case is something like: int a[] = null; a.length = 2; While not valid, shows the problem.
This is a Cheetah only bug. Added protection, and regression test GenericTypeTest#test240. Fixed
*** Bug 69998 has been marked as a duplicate of this bug. ***