Bug 6977 organize imports imports unnecessary classes
I'm talking about integration build of December 11: Here is a code (for jdk1.4): ------------ import java.io.IOException; public class test1 { static Thread thr = new Thread() { public void run() { System.out.println("Shutting down"); try { int c = System.in.read(); System.out.println(c); } catch (IOException e) { } } }; int o = 5; /** * Method main. * * @param args */ public static void main(String[] args) { Runtime r = Runtime.getRuntime(); r.traceInstructions(true); r.traceMethodCalls(true); r.addShutdownHook(thr); System.out.println("Available procs: " + r.availableProcessors ()); System.out.println("Free Memory: " + r.freeMemory()/1024 + "Kb"); System.out.println("Total Memory: " + r.totalMemory()/1024 + "Kb"); System.out.println("Max Memory: " + r.maxMemory()/1024 + "Kb"); System.getProperties().list(System.out); try { System.in.read(); } catch (Exception e) { } } } ---------- end of example code ------ Pressing CTRL+SHIFT+O to organize imports adds the following two imports: import sun.security.krb5.internal.r; import sun.security.krb5.internal.crypto.c; for the "c" and "r" VARIABLES!. This is a bad bad thing...... Surprisingly it skips the "o" field....
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java
IWorkingCopyManager manager= JavaPlugin.getDefault().getWorkingCopyManager();
		ICompilationUnit cu= manager.getWorkingCopy(fEditor.getEditorInput());
		if (cu != null) {
			String[] prefOrder= ImportOrganizePreferencePage.getImportOrderPreference();
			int threshold= ImportOrganizePreferencePage.getImportNumberThreshold();	
			OrganizeImportsOperation op= new OrganizeImportsOperation(cu, prefOrder, threshold, false, createChooseImportQuery());
			try {
				BusyIndicatorRunnableContext context= new BusyIndicatorRunnableContext();
				context.run(false, true, new WorkbenchRunnableAdapter(op));
			} catch (InvocationTargetException e) {
				JavaPlugin.log(e);
				MessageDialog.openError(JavaPlugin.getActiveWorkbenchShell(), JavaEditorMessages.getString("OrganizeImportsAction.error.title"), e.getTargetException().getMessage()); 
			} catch (InterruptedException e) {
				IProblem problem= op.getParsingError();
				if (problem != null) {
					showParsingErrorDialog(problem);
					int start= problem.getSourceStart();
					int end= problem.getSourceEnd();
					if (start != -1 && end != -1) {
						fEditor.selectAndReveal(start, end - start);
					}
				}
			}
		} else {
			JavaPlugin.logErrorMessage("OrganizeImportsAction.run: Working copy is null");
		}	
	}
	
	private IChooseImportQuery createChooseImportQuery() {
		return new IChooseImportQuery() {