diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
index f73b3ea..74630b6 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
@@ -27,7 +27,6 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -37,6 +36,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.jar.JarInputStream;
@@ -115,10 +115,6 @@
     public final static String LOG_STDOUT = "stdout";
     public final static String LOG_JUL = "jul";
 
-    static final SecureRandom random = new SecureRandom();
-
-    final File javaIoTmpdir = new File(System.getProperty("java.io.tmpdir"));
-
     final FileInstall fileInstall;
 
     Map<String, String> properties;
@@ -333,7 +329,7 @@
         int type = bundleEvent.getType();
         if (type == BundleEvent.UNINSTALLED)
         {
-            for (Iterator it = getArtifacts().iterator(); it.hasNext();)
+            for (Iterator<?> it = getArtifacts().iterator(); it.hasNext();)
             {
                 Artifact artifact = (Artifact) it.next();
                 if (artifact.getBundleId() == bundleEvent.getBundle().getBundleId())
@@ -594,17 +590,18 @@
     {
         if (tmpDir == null)
         {
+            File javaIoTmpdir = new File(System.getProperty("java.io.tmpdir"));
             if (!javaIoTmpdir.exists() && !javaIoTmpdir.mkdirs()) {
                 throw new IllegalStateException("Unable to create temporary directory " + javaIoTmpdir);
             }
-            for (;;)
+            Random random = new Random();
+            while (tmpDir == null)
             {
                 File f = new File(javaIoTmpdir, "fileinstall-" + Long.toString(random.nextLong()));
                 if (!f.exists() && f.mkdirs())
                 {
                     tmpDir = f;
                     tmpDir.deleteOnExit();
-                    break;
                 }
             }
         }
