diff --git a/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java b/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
index 70b7249..d613053 100644
--- a/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
+++ b/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
@@ -17,7 +17,6 @@
 package com.google.dexmaker.stock;
 
 import com.google.dexmaker.DexMakerTest;
-import dalvik.system.PathClassLoader;
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.InvocationHandler;
@@ -551,13 +550,13 @@
     }
 
     public void testClassNotCachedWithDifferentParentClassLoaders() throws Exception {
-        ClassLoader classLoaderA = new PathClassLoader("", getClass().getClassLoader());
+        ClassLoader classLoaderA = newPathClassLoader();
         SimpleClass a = proxyFor(SimpleClass.class)
                 .parentClassLoader(classLoaderA)
                 .build();
         assertEquals(classLoaderA, a.getClass().getClassLoader().getParent());
 
-        ClassLoader classLoaderB = new PathClassLoader("", getClass().getClassLoader());
+        ClassLoader classLoaderB = newPathClassLoader();
         SimpleClass b = proxyFor(SimpleClass.class)
                 .parentClassLoader(classLoaderB)
                 .build();
@@ -566,6 +565,13 @@
         assertTrue(a.getClass() != b.getClass());
     }
 
+    private ClassLoader newPathClassLoader() throws Exception {
+        return (ClassLoader) Class.forName("dalvik.system.PathClassLoader")
+                .getConstructor(String.class, ClassLoader.class)
+                .newInstance("", getClass().getClassLoader());
+
+    }
+
     public void testSubclassOfRandom() throws Exception {
         proxyFor(Random.class)
                 .handler(new InvokeSuperHandler())
