Bug 77771 RemoteTestRunnerClient doing work after junit shutdown [JUnit]
I am unsure of the exact test case but I would assume I shut down my workspace while running junit tests. java.lang.ClassNotFoundException: The class "org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient$8" cannot be loaded because the system is shutting down and the plug- in "org.eclipse.jdt.junit" has already been stopped. at org.eclipse.core.runtime.adaptor.EclipseClassLoader.shouldActivateFor (EclipseClassLoader.java:147) at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:62) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:371) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:402) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.notifyTestRunTerminate d(RemoteTestRunnerClient.java:510) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.access$31 (RemoteTestRunnerClient.java:507) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient$ServerConnection.run (RemoteTestRunnerClient.java:253)
org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RemoteTestRunnerClient.java
public abstract class ListenerSafeRunnable implements ISafeRunnable {
		public void handleException(Throwable exception) {
			JUnitPlugin.log(exception);
		}
	}
	/**
	 * A simple state machine to process requests from the RemoteTestRunner
	 */
	abstract class ProcessingState {
	    abstract ProcessingState readMessage(String message);
	}
	
	class DefaultProcessingState extends ProcessingState {
	    ProcessingState readMessage(String message) {
	        if (message.startsWith(MessageIds.TRACE_START)) {
	            fFailedTrace= ""; 
	            return fTraceState;
	        }
	        if (message.startsWith(MessageIds.EXPECTED_START)) {
	            fExpectedResult= null;
	            return fExpectedState;
	        }
	        if (message.startsWith(MessageIds.ACTUAL_START)) {
	            fActualResult= null;
	            return fActualState;
	        }
	        if (message.startsWith(MessageIds.RTRACE_START)) {
	            fFailedRerunTrace= ""; 
	            return fRerunState;
	        }