public void testCompile() throws Exception { Compiler compiler = new Compiler(); List<JavaClassFileObject> files = compiler.compile("A", "public class A implements java.util.concurrent.Callable<String> {\n" + "public String call() {\n" + "return \"hello\";\n" + "}\n" + "}"); assertEquals(1, files.size()); LoadingClassLoader loader = new LoadingClassLoader(Thread.currentThread().getContextClassLoader(), files); Class<?> A = loader.findClass("A"); Callable<String> asCallable = (Callable<String>)A.newInstance(); String ret = asCallable.call(); assertEquals("hello", ret); }
String simpleName = className.substring(className.lastIndexOf('.') + 1); if (simpleName.equals(name)) { LoadingClassLoader loader = new LoadingClassLoader(this.loader, classFiles); try { Class<?> clazz = loader.loadClass(classFile.getClassName());
private void doTestImport(ClassLoaderFactory factory) throws Exception { Compiler compiler = new Compiler(); List<JavaClassFileObject> files = compiler.compile("foo.A", "package foo;\n public class A {}"); assertEquals(1, files.size()); JavaClassFileObject aFile = files.get(0); JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "crash.jar"); jar.add(new ByteArrayAsset(aFile.getBytes()), "foo/A.class"); jar.setManifest(Thread.currentThread().getContextClassLoader().getResource("META-INF/MANIFEST.MF")); ClassLoader cl = factory.getClassLoader(jar); // compiler = new Compiler(cl); files = compiler.compile("B", "import foo.A;\n" + "public class B implements java.util.concurrent.Callable<A> {\n" + "public A call() {\n" + "return new A();\n" + "}\n" + "}"); assertEquals(1, files.size()); LoadingClassLoader loader = new LoadingClassLoader(cl, files); Class<?> B = loader.findClass("B"); Callable<?> asCallable = (Callable<?>)B.newInstance(); Object ret = asCallable.call(); assertNotNull(ret); Class<?> A = ret.getClass(); assertEquals("foo.A", A.getName()); assertEquals(cl, A.getClassLoader()); }
String simpleName = className.substring(className.lastIndexOf('.') + 1); if (simpleName.equals(name)) { LoadingClassLoader loader = new LoadingClassLoader(this.loader, classFiles); try { Class<?> clazz = loader.loadClass(classFile.getClassName());
String simpleName = className.substring(className.lastIndexOf('.') + 1); if (simpleName.equals(name)) { LoadingClassLoader loader = new LoadingClassLoader(this.loader, classFiles); try { Class<?> clazz = loader.loadClass(classFile.getClassName());