diff options
Diffstat (limited to 'test/727-checker-unresolved-class/src/Main.java')
| -rw-r--r-- | test/727-checker-unresolved-class/src/Main.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/test/727-checker-unresolved-class/src/Main.java b/test/727-checker-unresolved-class/src/Main.java index 04b403bc2e..5b6a46a662 100644 --- a/test/727-checker-unresolved-class/src/Main.java +++ b/test/727-checker-unresolved-class/src/Main.java @@ -14,11 +14,31 @@ * limitations under the License. */ -import unresolved.UnresolvedClass; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; public class Main { - public static void main(String[] args) { - UnresolvedClass.$noinline$main(); - System.out.println("passed"); + public static String TEST_NAME = "727-checker-unresolved-class"; + + public static ClassLoader getClassLoaderFor(String location) throws Exception { + try { + Class<?> class_loader_class = Class.forName("dalvik.system.PathClassLoader"); + Constructor<?> ctor = + class_loader_class.getConstructor(String.class, ClassLoader.class); + /* on Dalvik, this is a DexFile; otherwise, it's null */ + return (ClassLoader) ctor.newInstance(location + "/" + TEST_NAME + "-ex.jar", + Main.class.getClassLoader()); + } catch (ClassNotFoundException e) { + // Running on RI. Use URLClassLoader. + return new java.net.URLClassLoader( + new java.net.URL[] { new java.net.URL("file://" + location + "/classes-ex/") }); + } + } + + public static void main(String[] args) throws Exception { + ClassLoader new_loader = getClassLoaderFor(System.getenv("DEX_LOCATION")); + Class<?> testClass = Class.forName("Test", true, new_loader); + Method testMain = testClass.getMethod("$noinline$main"); + testMain.invoke(null); } } |