Project: Eclipse_Platform_UI
Bug 94540 [Undo] ClassNotFoundException disposing undoable operations on shutdown
Reported: 2005-05-10 17:28:11 | Status: verified fixed

build N20050509 Noticed the following in the console output for this build. The undo support is being shutdown during WorkbenchPlugin.stop, and is disposing operations that come from higher level plug-ins. By this time, however, higher level plug-ins have already been stopped. Recommend shutting down the undo support during Workbench.shutdown() instead of WorkbenchPlugin.stop. [java] !ENTRY org.eclipse.osgi 2005-05-09 05:28:03.250 [java] !MESSAGE The class "org.eclipse.ltk.core.refactoring.CompositeChange$2" cannot be loaded because the system is shutting down and the plug-in "org.eclipse.ltk.core.refactoring" has already been stopped. [java] !STACK 0 [java] java.lang.ClassNotFoundException: The class "org.eclipse.ltk.core.refactoring.CompositeChange$2" cannot be loaded because the system is shutting down and the plug-in "org.eclipse.ltk.core.refactoring" has already been stopped. [java] at org.eclipse.core.runtime.adaptor.EclipseClassLoader.shouldActivateFor(EclipseClassLoader.java:148) [java] at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:66) [java] at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:321) [java] at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369) [java] at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:334) [java] at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:74) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:235) [java] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) [java] at org.eclipse.ltk.core.refactoring.CompositeChange.dispose(CompositeChange.java:411) [java] at org.eclipse.ltk.internal.core.refactoring.UndoableOperation2ChangeAdapter.dispose(UndoableOperation2ChangeAdapter.java:252) [java] at org.eclipse.core.commands.operations.TriggeredOperations.dispose(TriggeredOperations.java:263) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.internalRemove(DefaultOperationHistory.java:801) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.flushUndo(DefaultOperationHistory.java:587) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.dispose(DefaultOperationHistory.java:299) [java] at org.eclipse.ui.internal.operations.WorkbenchOperationSupport.dispose(WorkbenchOperationSupport.java:58) [java] at org.eclipse.ui.internal.WorkbenchPlugin.stop(WorkbenchPlugin.java:893) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl$3.run(BundleContextImpl.java:1035) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:1031) [java] at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:402) [java] at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:410) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.basicStopBundles(BundleStopper.java:73) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.stopBundles(BundleStopper.java:62) [java] at org.eclipse.core.runtime.adaptor.EclipseAdaptor.frameworkStopping(EclipseAdaptor.java:696) [java] at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:515) [java] at org.eclipse.osgi.framework.internal.core.SystemBundle$1.run(SystemBundle.java:171) [java] at java.lang.Thread.run(Thread.java:534) [java] !ENTRY org.eclipse.osgi 2005-05-09 05:28:03.265 [java] !MESSAGE Error while stopping "org.eclipse.ui.workbench_3.1.0". [java] !STACK 0 [java] org.osgi.framework.BundleException: Exception in org.eclipse.ui.internal.WorkbenchPlugin.stop() of bundle org.eclipse.ui.workbench. [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:1051) [java] at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:402) [java] at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:410) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.basicStopBundles(BundleStopper.java:73) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.stopBundles(BundleStopper.java:62) [java] at org.eclipse.core.runtime.adaptor.EclipseAdaptor.frameworkStopping(EclipseAdaptor.java:696) [java] at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:515) [java] at org.eclipse.osgi.framework.internal.core.SystemBundle$1.run(SystemBundle.java:171) [java] at java.lang.Thread.run(Thread.java:534) [java] Caused by: java.lang.NoClassDefFoundError: org/eclipse/ltk/core/refactoring/CompositeChange$2 [java] at org.eclipse.ltk.core.refactoring.CompositeChange.dispose(CompositeChange.java:411) [java] at org.eclipse.ltk.internal.core.refactoring.UndoableOperation2ChangeAdapter.dispose(UndoableOperation2ChangeAdapter.java:252) [java] at org.eclipse.core.commands.operations.TriggeredOperations.dispose(TriggeredOperations.java:263) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.internalRemove(DefaultOperationHistory.java:801) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.flushUndo(DefaultOperationHistory.java:587) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.dispose(DefaultOperationHistory.java:299) [java] at org.eclipse.ui.internal.operations.WorkbenchOperationSupport.dispose(WorkbenchOperationSupport.java:58) [java] at org.eclipse.ui.internal.WorkbenchPlugin.stop(WorkbenchPlugin.java:893) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl$3.run(BundleContextImpl.java:1035) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:1031) [java] ... 8 more [java] Root exception: [java] java.lang.NoClassDefFoundError: org/eclipse/ltk/core/refactoring/CompositeChange$2 [java] at org.eclipse.ltk.core.refactoring.CompositeChange.dispose(CompositeChange.java:411) [java] at org.eclipse.ltk.internal.core.refactoring.UndoableOperation2ChangeAdapter.dispose(UndoableOperation2ChangeAdapter.java:252) [java] at org.eclipse.core.commands.operations.TriggeredOperations.dispose(TriggeredOperations.java:263) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.internalRemove(DefaultOperationHistory.java:801) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.flushUndo(DefaultOperationHistory.java:587) [java] at org.eclipse.core.commands.operations.DefaultOperationHistory.dispose(DefaultOperationHistory.java:299) [java] at org.eclipse.ui.internal.operations.WorkbenchOperationSupport.dispose(WorkbenchOperationSupport.java:58) [java] at org.eclipse.ui.internal.WorkbenchPlugin.stop(WorkbenchPlugin.java:893) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl$3.run(BundleContextImpl.java:1035) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:1031) [java] at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:402) [java] at org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:410) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.basicStopBundles(BundleStopper.java:73) [java] at org.eclipse.core.runtime.adaptor.BundleStopper.stopBundles(BundleStopper.java:62) [java] at org.eclipse.core.runtime.adaptor.EclipseAdaptor.frameworkStopping(EclipseAdaptor.java:696) [java] at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:515) [java] at org.eclipse.osgi.framework.internal.core.SystemBundle$1.run(SystemBundle.java:171) [java] at java.lang.Thread.run(Thread.java:534)

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPlugin.java