static class JavaXClassLoaderX extends JavaXClassLoader { ClassLoader virtualParent; *(S progID, L files, ClassLoader virtualParent) { super(progID, files); this.virtualParent = virtualParent; } protected Class findClass(S name) throws ClassNotFoundException { if (!eq(name, "main") && !name.startsWith("main$")) { Class c = virtualParent.loadClass(name); if (c != null) ret c; } ret super.findClass(name); } } static Class hotwireSharingLibraries(S progID) ctex { Pair p = CompilerBot.compileSnippet2(progID); File jar = p.a; assertTrue(f2s(jar), jar.isFile()); // collect files (program + libraries) L files = ll(jar); S dehlibs = unnull(loadTextFileFromZip(jar, "libraries")); L myLibraries = myLibraryFiles(); print("My libraries: " + myLibraries); Matcher matcher = Pattern.compile("\\d+").matcher(dehlibs); while (matcher.find()) { S libID = matcher.group(); File lib = loadLibrary(libID); if (myLibraries.contains(lib)) print("Skipping lib " + lib); else { print("Adding lib " + lib); files.add(lib); } } // make class loader JavaXClassLoaderX classLoader = new(progID, files, myClassLoader()); ret hotwire_finish(classLoader, progID, p.b); }