diff -r 1848c77df886 -r 3884815c0629 emul/src/main/java/java/lang/Class.java --- a/emul/src/main/java/java/lang/Class.java Sat Dec 15 07:10:58 2012 +0100 +++ b/emul/src/main/java/java/lang/Class.java Sat Dec 15 08:17:45 2012 +0100 @@ -144,18 +144,22 @@ */ public static Class forName(String className) throws ClassNotFoundException { - Class c = loadCls(className.replace('.', '_')); + Class c = loadCls(className, className.replace('.', '_')); if (c == null) { throw new ClassNotFoundException(); } return c; } - @JavaScriptBody(args = "c", body = - "if (vm[c]) return vm[c].$class;" - + "else return null;" + @JavaScriptBody(args = {"n", "c" }, body = + "if (vm[c]) return vm[c].$class;\n" + + "if (vm.loadClass) {\n" + + " vm.loadClass(n);\n" + + " if (vm[c]) return vm[c].$class;\n" + + "}\n" + + "return null;" ) - private static native Class loadCls(String c); + private static native Class loadCls(String n, String c); /**