Buggy code:
public abstract class AbstractImageBuilder implements ICompilerRequestor { protected JavaBuilder javaBuilder ; protected State newState ; protected IContainer outputFolder ; protected IContainer [ ] sourceFolders ; protected BuildNotifier notifier ; protected boolean hasSeparateOutputFolder ; protected NameEnvironment nameEnvironment ; protected Compiler compiler ; protected WorkQueue workQueue ; protected ArrayList problemTypeLocations ; protected boolean compiledAllAtOnce ; private boolean inCompiler ; public static int MAX_AT_ONCE = 1000 ; protected AbstractImageBuilder ( JavaBuilder javaBuilder ) { } public void acceptResult ( CompilationResult result ) { } protected void cleanUp ( ) { } protected void compile ( String [ ] filenames , String [ ] initialTypeNames ) { } void compile ( SourceFile [ ] units , String [ ] initialTypeNames , String [ ] additionalFilenames ) { } protected void createErrorFor ( IResource resource , String message ) { } protected String extractTypeNameFrom ( String sourceLocation ) { } protected void finishedWith ( String sourceLocation , CompilationResult result , char [ ] mainTypeName , ArrayList definedTypeNames , ArrayList duplicateTypeNames ) throws CoreException { } protected IContainer getOutputFolder ( IPath packagePath ) throws CoreException { } protected RuntimeException internalException ( CoreException t ) { } protected Compiler newCompiler ( ) { } protected IResource resourceForLocation ( String sourceLocation ) { } protected void storeProblemsFor ( IResource resource , IProblem [ ] problems ) throws CoreException { if ( ( ( resource == null ) || ( problems == null ) ) || ( ( problems . length ) == 0 ) ) return ; String missingClassFile = null ; for ( int i = 0 , length = problems . length ; i < length ; i ++ ) { IProblem problem = problems [ i ] ; int id = problem . getID ( ) ; switch ( id ) { case IProblem . IsClassPathCorrect : JavaBuilder . removeProblemsFor ( javaBuilder . currentProject ) ; String [ ] args = problem . getArguments ( ) ; missingClassFile = args [ 0 ] ; break ; case IProblem . SuperclassMustBeAClass : case IProblem . SuperInterfaceMustBeAnInterface : case IProblem . HierarchyCircularitySelfReference : case IProblem . HierarchyCircularity : case IProblem . HierarchyHasProblems : case IProblem . SuperclassNotFound : case IProblem . SuperclassNotVisible : case IProblem . SuperclassAmbiguous : case IProblem . SuperclassInternalNameProvided : case IProblem . SuperclassInheritedNameHidesEnclosingName : case IProblem . InterfaceNotFound : case IProblem . InterfaceNotVisible : case IProblem . InterfaceAmbiguous : case IProblem . InterfaceInternalNameProvided : case IProblem . InterfaceInheritedNameHidesEnclosingName : String fileLocation = resource . getLocation ( ) . toString ( ) ; if ( ! ( problemTypeLocations . contains ( fileLocation ) ) ) problemTypeLocations . add ( fileLocation ) ; } IMarker marker = resource . createMarker ( ProblemMarkerTag ) ; marker . setAttributes ( new String [ ] { IMarker . MESSAGE , IMarker . SEVERITY , IJavaModelMarker . ID , IMarker . CHAR_START , IMarker . CHAR_END , IMarker . LINE_NUMBER , IJavaModelMarker . ARGUMENTS } , new Object [ ] { problem . getMessage ( ) , new Integer ( ( problem . isError ( ) ? IMarker . SEVERITY_ERROR : IMarker . SEVERITY_WARNING ) ) , new Integer ( id ) , new Integer ( problem . getSourceStart ( ) ) , new Integer ( ( ( problem . getSourceEnd ( ) ) + 1 ) ) , new Integer ( problem . getSourceLineNumber ( ) ) , Util . getProblemArgumentsForMarker ( problem . getArguments ( ) ) } ) ; IJavaElement element = JavaCore . create ( resource ) ; if ( element instanceof ICompilationUnit ) { ICompilationUnit unit = ( ( ICompilationUnit ) ( element ) ) ; IJavaElement fragment = unit . getElementAt ( problem . getSourceStart ( ) ) ; if ( fragment != null ) element = fragment ; } String location = null ; if ( element instanceof JavaElement ) location = ( ( JavaElement ) ( element ) ) . readableName ( ) ; if ( location != null ) marker . setAttribute ( IMarker . LOCATION , location ) ; if ( missingClassFile != null ) <START_BUG> throw new IncompleteClassPathException ( missingClassFile ) ; <END_BUG> } } protected void updateProblemsFor ( String sourceLocation , CompilationResult result ) throws CoreException { } protected char [ ] writeClassFile ( ClassFile classFile , boolean isSecondaryType ) throws CoreException { } protected boolean writeClassFileCheck ( IFile file , String fileName , byte [ ] bytes , boolean isSecondaryType ) throws CoreException { } }

Fix:
throw new AbortCompilation ( true , new IncompleteClassPathException ( missingClassFile ) ) ;