// compile JavaX source, load classes & return main class // src can be a snippet ID or actual source code // requires class _javax static Class hotwire(String src) { try { try { _javax.androidContext = get(main.class, "androidContext"); } catch (Exception e) {} List libraries = new ArrayList(); File srcDir = _javax.transpileMain(src, libraries); if (_javax.androidContext != null) return _javax.loadx2android(srcDir, src); File classesDir = _javax.TempDirMaker_make(); String javacOutput = _javax.compileJava(srcDir, libraries, classesDir); System.out.println(javacOutput); URL[] urls = new URL[libraries.size()+1]; urls[0] = classesDir.toURI().toURL(); for (int i = 0; i < libraries.size(); i++) urls[i+1] = libraries.get(i).toURI().toURL(); // make class loader URLClassLoader classLoader = new URLClassLoader(urls); // load & return main class Class theClass = classLoader.loadClass("main"); if (isSnippetID(src)) try { set(theClass, "programID", src); } catch (Throwable e) {} return theClass; } catch (Exception e) { throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e); } }