Bug 102492 [quick fix] Halt in Computing serial version ID...
Hello, My work environments are like the following. Eclipse: 3.1 J2SDK: j2sdk1.4.2_08 OS: Windows XP Professional Plug-in: MyEclipse, XMLBuddy Framworks in the working project: Hibernate 3.0.5, Struts, ... After newly installing Eclipse 3.1, I imported a project created by earlier versions of Eclipse from v2.1. After importing, a list of Problems were detected. Many of them were "The serializable class XxxxXxxx does not declare serialVersionUID..." in the "Problems" view. For the problems, I used the Quick Fix (Cntr-1) menu to "Add generated serial version ID." By doing this way, I created many sercialVersionUID for classes missing them. But the system got halt when I did the same thing for some classes. Those classes are marked with [*] in the list below, as examples. [*] public class FileUploader extends HttpServlet {...} [*] public class SysProfileWrapperImpl implements ProfileWrapper, HttpSessionBindingListener {...} public interface ProfileWrapper extends Serializable {...} [*] public class TimestampTag extends MyTagSupport {...} abstract public class MyTagSupport extends TagSupport {...} The error message poped up in the [Progress Information] dialog box is +---------------------------------------------------------+ | Computing serial version ID... | | |||||||||||||||||||||||||||||||| | | Starting virtual machine... | | [Cancel] [Details >>] | +---------------------------------------------------------+ And it never advanced from a certain point. I clicked the [Cancel] button, and the button became disabled. I waited but nothing happened after that. I couldn't kill the dialog box and so I could get back to the main eclipse window. The [Detail >>] button initially appeared with disabled status. I hope you may simulate the situation I had and fix the problem whatever the solution is... I thank you very much for providing Elipse, very nice development tool for developers like me... Sincerely, Yunseuk Kim
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/SerialVersionHashProposal.java
final IJavaProject project= unit.getJavaProject();
			final IPath path= unit.getResource().getFullPath();
			try {
				FileBuffers.getTextFileBufferManager().connect(path, new SubProgressMonitor(monitor, 1));
				final ITextFileBuffer buffer= FileBuffers.getTextFileBufferManager().getTextFileBuffer(path);
				if (buffer.isDirty() && buffer.isStateValidated() && buffer.isCommitable() && displayYesNoMessage(CorrectionMessages.SerialVersionHashProposal_save_caption, CorrectionMessages.SerialVersionHashProposal_save_message))
					buffer.commit(new SubProgressMonitor(monitor, 1), true);
				else
					monitor.worked(1);
			} finally {
				FileBuffers.getTextFileBufferManager().disconnect(path, new SubProgressMonitor(monitor, 1));
			}
			project.getProject().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new SubProgressMonitor(monitor, 1));
			final ILaunchConfigurationWorkingCopy copy= DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationType(LAUNCH_CONFIG_TYPE).newInstance(null, LAUNCH_CONFIG_TYPE + System.currentTimeMillis());
			monitor.worked(1);
			copy.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true);
			copy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH, false);
			copy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME, SERIAL_SUPPORT_CLASS);
			copy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, getQualifiedName());
			copy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, project.getElementName());
			final String[] entries= JavaRuntime.computeDefaultRuntimeClassPath(project);
			final IRuntimeClasspathEntry[] classpath= new IRuntimeClasspathEntry[entries.length + 2];
			monitor.worked(1);
			classpath[0]= JavaRuntime.newRuntimeContainerClasspathEntry(new Path(JavaRuntime.JRE_CONTAINER), IRuntimeClasspathEntry.STANDARD_CLASSES, project);
			classpath[1]= JavaRuntime.newArchiveRuntimeClasspathEntry(Path.fromOSString(Platform.asLocalURL(JavaPlugin.getDefault().getBundle().getEntry(SERIAL_SUPPORT_JAR)).getFile()));
			for (int index= 2; index < classpath.length; index++)
				classpath[index]= JavaRuntime.newArchiveRuntimeClasspathEntry(Path.fromOSString(entries[index - 2]));
			final List mementos= new ArrayList(classpath.length);
			IRuntimeClasspathEntry entry= null;
			for (int index= 0; index < classpath.length; index++) {