IFolder classFolder= outputContainer.getFolder(pathInJar.removeLastSegments(1)); if (fClassFilesMapFolder == null || !fClassFilesMapFolder.equals(classFolder)) { fJavaNameToClassFilesMap= buildJavaToClassMap(classFolder); fClassFilesMapFolder= classFolder;
IContainer classContainer= outputContainer; if (pathInJar.segmentCount() > 1) classContainer= outputContainer.getFolder(pathInJar.removeLastSegments(1)); if (fClassFilesMapContainer == null || !fClassFilesMapContainer.equals(classContainer)) { fJavaNameToClassFilesMap= buildJavaToClassMap(classContainer); fClassFilesMapContainer= classContainer;
	protected Iterator filesOnClasspath(IFile file, IPath pathInJar, IJavaProject javaProject, IProgressMonitor progressMonitor) throws CoreException, IOException {		IPath outputPath= javaProject.getOutputLocation();		IContainer outputContainer;				if (javaProject.getProject().getFullPath().equals(outputPath))			outputContainer= javaProject.getProject();		else {			outputContainer= createFolderHandle(outputPath);			if (outputContainer == null || !outputContainer.isAccessible())				throw new IOException("Output container not accessible");		}		if (isJavaFile(file)) {			// Java CU - search files with .class ending			boolean hasErrors= fJarPackage.hasCompileErrors(file);			boolean hasWarnings= fJarPackage.hasCompileWarnings(file);			boolean canBeExported= canBeExported(hasErrors, hasWarnings);			reportPossibleCompileProblems(file, hasErrors, hasWarnings, canBeExported);			if (!canBeExported)				return Collections.EMPTY_LIST.iterator();			IFolder classFolder= outputContainer.getFolder(pathInJar.removeLastSegments(1));			if (fClassFilesMapFolder == null || !fClassFilesMapFolder.equals(classFolder)) {				fJavaNameToClassFilesMap= buildJavaToClassMap(classFolder);				fClassFilesMapFolder= classFolder;			}			ArrayList classFiles= (ArrayList)fJavaNameToClassFilesMap.get(file.getName());			if (classFiles == null || classFiles.isEmpty())				throw new IOException("class file(s) on classpath not found or not  accessible " + file.getFullPath());			return classFiles.iterator();		}		else {			// resource  - search file with same name			List binaryFiles= new ArrayList(5);			IFile cpFile= outputContainer.getFile(pathInJar);			if (cpFile.isAccessible()) {				if (!cpFile.isLocal(IResource.DEPTH_ZERO))					cpFile.setLocal(true , IResource.DEPTH_ZERO, progressMonitor);				binaryFiles.add(cpFile);			}			else 				throw new IOException("Resource on classpath not found or not  accessible " + cpFile.getFullPath().toString());			return binaryFiles.iterator();		}	}