diff --git a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java
index 3cb7398..71a40e3 100644
--- a/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java
+++ b/org.eclipse.jdt.debug.tests/test plugin/org/eclipse/jdt/debug/testplugin/JavaProjectHelper.java
@@ -552,18 +552,20 @@
 	 */
 	private static void addJavaFiles(File dir, List<File> collection) throws IOException {
 		File[] files = dir.listFiles();
-		List<File> subDirs = new ArrayList<File>(2);
-		for (int i = 0; i < files.length; i++) {
-			if (files[i].isFile()) {
-				collection.add(files[i]);
-			} else if (files[i].isDirectory() && files[i].getName().indexOf("CVS") < 0) {
-				subDirs.add(files[i]);
+		if(files != null) {
+			List<File> subDirs = new ArrayList<File>(2);
+			for (int i = 0; i < files.length; i++) {
+				if (files[i].isFile()) {
+					collection.add(files[i]);
+				} else if (files[i].isDirectory() && files[i].getName().indexOf("CVS") < 0) {
+					subDirs.add(files[i]);
+				}
 			}
-		}
-		Iterator<File> iter = subDirs.iterator();
-		while (iter.hasNext()) {
-			File subDir = iter.next();
-			addJavaFiles(subDir, collection);
+			Iterator<File> iter = subDirs.iterator();
+			while (iter.hasNext()) {
+				File subDir = iter.next();
+				addJavaFiles(subDir, collection);
+			}
 		}
 	}
 	
