summaryrefslogtreecommitdiff
path: root/test/727-checker-unresolved-class/src/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/727-checker-unresolved-class/src/Main.java')
-rw-r--r--test/727-checker-unresolved-class/src/Main.java28
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);
}
}