Bug 30786 java.lang.NoSuchFieldError: handle
Using Eclipse in Linux with Build id: 200302020010 i occasionally get strange errors which prevents modified Java-files from being saved. Happens randomly but when starting to appear stays until the file is removed editor and after reopening saving works ok (for awhile). Notice the same behaviour in maybe build 20030201. Build 2901 (ddmm) doesn't suffer from this bug. Here's the .log: !ENTRY org.eclipse.ui 4 4 helmi 03, 2003 03:49:34.516 !MESSAGE Unhandled exception caught in event loop. !ENTRY org.eclipse.ui 4 0 helmi 03, 2003 03:49:34.607 !MESSAGE handle !STACK 0 java.lang.NoSuchFieldError: handle at org.eclipse.jdt.internal.ui.javaeditor.JavaMarkerAnnotation.getImage(JavaMarkerAnnotation.java:267) at org.eclipse.ui.texteditor.MarkerAnnotation.paint(MarkerAnnotation.java:196) at org.eclipse.jface.text.source.AnnotationRulerColumn.doPaint(AnnotationRulerColumn.java:350) at org.eclipse.jface.text.source.AnnotationRulerColumn.doubleBufferPaint(AnnotationRulerColumn.java:241) at org.eclipse.jface.text.source.AnnotationRulerColumn.access$3(AnnotationRulerColumn.java:216) at org.eclipse.jface.text.source.AnnotationRulerColumn$1.paintControl(AnnotationRulerColumn.java:155) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:80) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:897) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:922) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:906) at org.eclipse.swt.widgets.Control.gtk_expose_event(Control.java:1618) at org.eclipse.swt.widgets.Composite.gtk_expose_event(Composite.java:322) at org.eclipse.swt.widgets.Canvas.gtk_expose_event(Canvas.java:101) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1138) at org.eclipse.swt.widgets.Display.windowProc(Display.java:1844) at org.eclipse.swt.internal.gtk.OS.gtk_main_iteration(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1255) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1265) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1248) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) 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:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539) I tried looking for an existing bug but didn't find one, so i decided to make a new one.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaMarkerAnnotation.java
import org.eclipse.ui.texteditor.MarkerUtilities;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.search.ui.SearchUI;
import org.eclipse.jdt.core.IJavaModelMarker;
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.internal.core.Util;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor;
public class JavaMarkerAnnotation extends MarkerAnnotation implements IJavaAnnotation {
	
	private static final int NO_IMAGE= 0;
	private static final int ORIGINAL_MARKER_IMAGE= 1;
	private static final int QUICKFIX_IMAGE= 2;
	private static final int QUICKFIX_ERROR_IMAGE= 3;
	private static final int OVERLAY_IMAGE= 4;
	private static final int GRAY_IMAGE= 5;
	private static final int BREAKPOINT_IMAGE= 6;
	private static Image fgQuickFixImage;
	private static Image fgQuickFixErrorImage;
	private static ImageRegistry fgGrayMarkersImageRegistry;
	
	private IDebugModelPresentation fPresentation;
	private IJavaAnnotation fOverlay;
	private boolean fNotRelevant= false;
	private AnnotationType fType;
	private int fImageType;
	private boolean fQuickFixIconEnabled;