diff --git a/tests/org.eclipse.jem.tests/Java AllSuites.launch b/tests/org.eclipse.jem.tests/Java AllSuites.launch
index aac8a50..48c6654 100644
--- a/tests/org.eclipse.jem.tests/Java AllSuites.launch
+++ b/tests/org.eclipse.jem.tests/Java AllSuites.launch
@@ -3,15 +3,14 @@
 <booleanAttribute key="clearws" value="true"/>
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.jem.tests.AllSuites"/>
 <booleanAttribute key="tracing" value="false"/>
-<stringAttribute key="vmargs" value=""/>
 <booleanAttribute key="default" value="true"/>
+<stringAttribute key="vmargs" value=""/>
 <stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
 <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
 <stringAttribute key="progargs" value="-os win32 -ws win32 -arch x86 -nl en_US"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.jem.tests"/>
 <booleanAttribute key="askclear" value="true"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.debug.ui.javaSourceLocator"/>
 <stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
 <stringAttribute key="location0" value="D:\runtime-junit-test-workspace"/>
 </launchConfiguration>
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
index 0ee5cbe..c24c804 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaProjectUtil.java,v $
- *  $Revision: 1.2 $  $Date: 2004/01/23 22:53:36 $ 
+ *  $Revision: 1.3 $  $Date: 2004/05/20 21:42:39 $ 
  */
 
 
@@ -23,6 +23,7 @@
 import org.eclipse.ant.core.AntRunner;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.MultiRule;
 import org.eclipse.jdt.core.*;
 import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.IJavaProject;
@@ -71,7 +72,7 @@
 				project.create(description, new SubProgressMonitor(monitor, 1000));
 				project.open(new SubProgressMonitor(monitor, 1000));				
 			}
-		}, pm);
+		}, project, 0, pm);
 		
 		return project;
 	}
@@ -121,7 +122,7 @@
 					e.printStackTrace();
 				}
 			}
-		}, pm);
+		}, project, 0, pm);
 		
 		return project;
 	}
@@ -197,7 +198,7 @@
 				} catch (IOException e) {
 				}
 			}
-		}, null);
+		}, workspace.getRoot(), 0, null);
 		
 		return result;
 	}
@@ -241,6 +242,6 @@
 					project.setRawClasspath(newRaw, new SubProgressMonitor(monitor, 100));
 				}
 			}
-		}, pm);
+		}, project.getProject(), 0, pm);
 	}
 }
\ No newline at end of file
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/BeanInfoSuite.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/BeanInfoSuite.java
index d185177..e10ba23 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/BeanInfoSuite.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/BeanInfoSuite.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeanInfoSuite.java,v $
- *  $Revision: 1.4 $  $Date: 2004/03/24 15:07:48 $ 
+ *  $Revision: 1.5 $  $Date: 2004/05/20 21:42:39 $ 
  */
 import java.net.URL;
 
@@ -92,7 +92,7 @@
 				JavaProjectUtil.deleteProject(JavaProjectUtil.getProject(AbstractBeanInfoTestCase.TEST_BEANINFO_BEANINFOS_PROJECT));
 				JavaProjectUtil.deleteProject(JavaProjectUtil.getProject(AbstractBeanInfoTestCase.TEST_BEANINFO_PREREQ_PROJECT));
 			}
-		}, null);
+		}, ResourcesPlugin.getWorkspace().getRoot(), 0, null);
 
 		JavaProjectUtil.setAutoBuild(oldAutoBuildingState);
 	}
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/TestStandard.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/TestStandard.java
index 23b7bd8..bdaa4e1 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/TestStandard.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/beaninfo/TestStandard.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: TestStandard.java,v $
- *  $Revision: 1.5 $  $Date: 2004/05/05 21:03:10 $ 
+ *  $Revision: 1.6 $  $Date: 2004/05/20 21:42:39 $ 
  */
 
 import java.util.Iterator;
@@ -499,7 +499,7 @@
 					project.close(monitor);
 					project.open(monitor);
 				}
-			}, null);
+			}, project, 0, null);
 		}
 	}
 	
@@ -523,7 +523,7 @@
 					project.close(monitor);
 					project.open(monitor);
 				}
-			}, null);
+			}, project, 0, null);
 		}
 	}
 	
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/instantiation/InstantiationSuite.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/instantiation/InstantiationSuite.java
index 7b613c2..030e344 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/instantiation/InstantiationSuite.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/instantiation/InstantiationSuite.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: InstantiationSuite.java,v $
- *  $Revision: 1.4 $  $Date: 2004/03/24 15:07:48 $ 
+ *  $Revision: 1.5 $  $Date: 2004/05/20 21:42:39 $ 
  */
 import java.net.URL;
 
@@ -89,7 +89,7 @@
 				JavaProjectUtil.deleteProject(JavaProjectUtil.getProject(AbstractBeanInfoTestCase.TEST_BEANINFO_PROJECT));
 				JavaProjectUtil.deleteProject(JavaProjectUtil.getProject(AbstractBeanInfoTestCase.TEST_BEANINFO_PREREQ_PROJECT));
 			}
-		}, null);
+		}, ResourcesPlugin.getWorkspace().getRoot(), 0, null);
 
 		JavaProjectUtil.setAutoBuild(oldAutoBuildingState);
 	}
