Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 2641

Summary: [Preferences] NPE due to NoClassDefFound in preferences (1GHH5V7)
Product: [Eclipse Project] Platform Reporter: Nick Edgar <n.a.edgar>
Component: UIAssignee: Randy Giffen <Randy_Giffen>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 Keywords: investigate
Version: 2.0   
Target Milestone: ---   
Hardware: All   
OS: Windows 2000   
See Also: https://git.eclipse.org/r/115995
https://git.eclipse.org/r/115996
https://git.eclipse.org/c/www.eclipse.org/eclipse.org-common.git/commit/?id=870894edcac009d0a417d42e687d3fde1de29ab9
https://git.eclipse.org/c/www.eclipse.org/org.git/commit/?id=4226fe2619c68752a3d25ebb34e93467c97bffe6
Whiteboard:

Description Nick Edgar CLA 2001-10-10 22:40:32 EDT
- was running a target Eclipse from a dev env Eclipse
- deleted the bin directory from the workspace
- tried to open a preference page (it was the Java Console one, but I doubt it matters)

Got an error dialog and the following walkbacks in the log.
The NoClassDefFoundError's are not surprising, but it shouldn't cause a NPE as well.
Note that the NPE happened a few of seconds later, probably while trying to selecting other preference pages.

Log: Thu Jul 26 10:10:11 EDT 2001
4 org.eclipse.core.runtime 0 Unhandled exception caught in event loop.
java.lang.NoClassDefFoundError: org/eclipse/jface/preference/ColorFieldEditor$1
	at org.eclipse.jface.preference.ColorFieldEditor.getChangeControl(ColorFieldEditor.java:142)
	at org.eclipse.jface.preference.ColorFieldEditor.doFillIntoGrid(ColorFieldEditor.java:93)
	at org.eclipse.jface.preference.FieldEditor.createControl(FieldEditor.java:220)
	at org.eclipse.jface.preference.FieldEditor.<init>(FieldEditor.java:114)
	at org.eclipse.jface.preference.ColorFieldEditor.<init>(ColorFieldEditor.java:58)
	at org.eclipse.debug.internal.ui.ConsolePreferencePage.createFieldEditors(ConsolePreferencePage.java:49)
	at org.eclipse.jface.preference.FieldEditorPreferencePage.createContents(FieldEditorPreferencePage.java:195)
	at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:194)
	at org.eclipse.debug.internal.ui.ConsolePreferencePage.createControl(ConsolePreferencePage.java:37)
	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:658)
	at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:366)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:83)
	at org.eclipse.jface.preference.PreferenceDialog$3.widgetSelected(PreferenceDialog.java:358)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:85)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled Code))
	at org.eclipse.jface.window.Window.open(Window.java:517)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:47)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:408)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java:362)
	at org.eclipse.jface.action.ActionContributionItem.access$0(ActionContributionItem.java:353)
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java:47)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(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.run(Workbench.java:622)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:815)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:119)
	at org.eclipse.core.launcher.Main.run(Main.java:466)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
Log: Thu Jul 26 10:10:11 EDT 2001
4 org.eclipse.core.runtime 0 org/eclipse/jface/preference/ColorFieldEditor$1
java.lang.NoClassDefFoundError: org/eclipse/jface/preference/ColorFieldEditor$1
	at org.eclipse.jface.preference.ColorFieldEditor.getChangeControl(ColorFieldEditor.java:142)
	at org.eclipse.jface.preference.ColorFieldEditor.doFillIntoGrid(ColorFieldEditor.java:93)
	at org.eclipse.jface.preference.FieldEditor.createControl(FieldEditor.java:220)
	at org.eclipse.jface.preference.FieldEditor.<init>(FieldEditor.java:114)
	at org.eclipse.jface.preference.ColorFieldEditor.<init>(ColorFieldEditor.java:58)
	at org.eclipse.debug.internal.ui.ConsolePreferencePage.createFieldEditors(ConsolePreferencePage.java:49)
	at org.eclipse.jface.preference.FieldEditorPreferencePage.createContents(FieldEditorPreferencePage.java:195)
	at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:194)
	at org.eclipse.debug.internal.ui.ConsolePreferencePage.createControl(ConsolePreferencePage.java:37)
	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:658)
	at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:366)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:83)
	at org.eclipse.jface.preference.PreferenceDialog$3.widgetSelected(PreferenceDialog.java:358)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:85)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled Code))
	at org.eclipse.jface.window.Window.open(Window.java:517)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:47)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:408)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java:362)
	at org.eclipse.jface.action.ActionContributionItem.access$0(ActionContributionItem.java:353)
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java:47)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(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.run(Workbench.java:622)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:815)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:119)
	at org.eclipse.core.launcher.Main.run(Main.java:466)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
Log: Thu Jul 26 10:10:16 EDT 2001
4 org.eclipse.core.runtime 0 Unhandled exception caught in event loop.
java.lang.NullPointerException
	at org.eclipse.jface.preference.PreferencePage.doComputeSize(PreferencePage.java:273)
	at org.eclipse.jface.preference.PreferencePage.computeSize(PreferencePage.java:136)
	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:662)
	at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:366)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:83)
	at org.eclipse.jface.preference.PreferenceDialog$3.widgetSelected(PreferenceDialog.java:358)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:85)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled Code))
	at org.eclipse.jface.window.Window.open(Window.java:517)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:47)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:408)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java:362)
	at org.eclipse.jface.action.ActionContributionItem.access$0(ActionContributionItem.java:353)
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java:47)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(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.run(Workbench.java:622)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:815)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:119)
	at org.eclipse.core.launcher.Main.run(Main.java:466)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
Log: Thu Jul 26 10:10:16 EDT 2001
4 org.eclipse.core.runtime 0 java.lang.NullPointerException
java.lang.NullPointerException
	at org.eclipse.jface.preference.PreferencePage.doComputeSize(PreferencePage.java:273)
	at org.eclipse.jface.preference.PreferencePage.computeSize(PreferencePage.java:136)
	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:662)
	at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:366)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:83)
	at org.eclipse.jface.preference.PreferenceDialog$3.widgetSelected(PreferenceDialog.java:358)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:85)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled Code))
	at org.eclipse.jface.window.Window.open(Window.java:517)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:47)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:408)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java:362)
	at org.eclipse.jface.action.ActionContributionItem.access$0(ActionContributionItem.java:353)
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java:47)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(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.run(Workbench.java:622)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:815)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:119)
	at org.eclipse.core.launcher.Main.run(Main.java:466)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)

NOTES:

NE (07/26/01 10:18:39 AM)
	In the code, doComputeSize is:

protected Point doComputeSize() {
	if (descriptionLabel != null) {
		Point size = body.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
		GridData gd = (GridData) descriptionLabel.getLayoutData();
		gd.widthHint = size.x;
	}
	return getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
}


It's only called from computeSize() if getControl() is non-null, so the only thing that could be null here is body.
Is it possible for body to be null if descriptionLabel is not null?
Comment 1 DJ Houghton CLA 2001-10-29 19:06:26 EST
PRODUCT VERSION:
0.9 jdk

Comment 2 Nick Edgar CLA 2002-01-27 14:12:30 EST
As with property pages, the preferences dialog should be resilient to failure 
in its pages.
Comment 3 Randy Giffen CLA 2002-05-27 21:40:39 EDT
Defer
Comment 4 Randy Giffen CLA 2002-08-08 14:55:02 EDT
Reopen to investigate
Comment 5 Tod Creasey CLA 2002-08-09 10:44:20 EDT
This is currently handled by opening a page with no contents and reporting to 
the console.
Comment 6 Eclipse Genie CLA 2018-01-24 13:21:33 EST
New Gerrit change created: https://git.eclipse.org/r/115995
Comment 7 Eclipse Genie CLA 2018-01-24 13:24:06 EST
New Gerrit change created: https://git.eclipse.org/r/115996