8104574: Update tests to prepare for system class loader not be URLClassLoader
authormchung
Wed, 15 Jul 2015 12:10:03 +0800
changeset 31685 6a6e995cf912
parent 31684 5c7dc133b086
child 31686 d3da32009b1d
child 31687 d6eb4f028c60
8104574: Update tests to prepare for system class loader not be URLClassLoader Reviewed-by: chegar
jdk/test/java/lang/reflect/Generics/ThreadSafety.java
--- a/jdk/test/java/lang/reflect/Generics/ThreadSafety.java	Tue Jul 14 22:21:52 2015 -0400
+++ b/jdk/test/java/lang/reflect/Generics/ThreadSafety.java	Wed Jul 15 12:10:03 2015 +0800
@@ -28,8 +28,11 @@
  * @run testng ThreadSafety
  */
 
+import java.io.File;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.concurrent.BrokenBarrierException;
 import java.util.concurrent.Callable;
@@ -71,9 +74,13 @@
     /** published via data race */
     private Class<?> racyClass = Object.class;
 
-    private URL[] urls = ((URLClassLoader) ThreadSafety.class.getClassLoader()).getURLs();
-
     private Class<?> createNewEmptyGenericSubclassClass() throws Exception {
+        String[] cpaths = System.getProperty("test.classes", ".")
+                                .split(File.pathSeparator);
+        URL[] urls = new URL[cpaths.length];
+        for (int i=0; i < cpaths.length; i++) {
+            urls[i] = Paths.get(cpaths[i]).toUri().toURL();
+        }
         URLClassLoader ucl = new URLClassLoader(urls, null);
         return Class.forName("ThreadSafety$EmptyClass$EmptyGenericSubclass", true, ucl);
     }