@Override protected Class<?> findClass(final String name) throws ClassNotFoundException { try { return super.findClass(name); } catch (final ClassNotFoundException e) { try { FileInputStream inputStream = null; final byte[] classDefinition; final File innerClass = new File(searchPath + "/" + name.substring(name.lastIndexOf('.') + 1) + ".class"); if (innerClass.exists()) { try { inputStream = new FileInputStream(innerClass); classDefinition = new byte[inputStream.available()]; inputStream.read(classDefinition); return defineClassX(name, classDefinition, 0, classDefinition.length); } finally { if (inputStream != null) inputStream.close(); } } } catch (final IOException e2) { throw new RuntimeException("failed to load class: " + name, e2); } } throw new ClassNotFoundException(name); } }
final BootstrapClassloader clsLoader = new BootstrapClassloader(new File(path).getParentFile().getAbsolutePath(), "system".equals(classLoadingMode) ? ClassLoader.getSystemClassLoader() : final Class<?> loadClass = clsLoader.loadClass(fqcn); success = true; return loadClass; cls = clsLoader.loadClass(nestedClassName); } catch (final ClassNotFoundException ignored) { inputStream.read(classDefinition); clsLoader.defineClassX(nestedClassName, classDefinition, 0, classDefinition.length); } finally { inputStream.close(); .defineClassX(fqcn, classDefinition, 0, classDefinition.length); cls = clsLoader.loadClass(nestedClassName); inputStream.read(classDefinition); clsLoader.defineClassX(nestedClassName, classDefinition, 0, classDefinition.length);
final BootstrapClassloader clsLoader = new BootstrapClassloader(new File(path).getParentFile().getAbsolutePath(), "system".equals(classLoadingMode) ? ClassLoader.getSystemClassLoader() : final Class<?> loadClass = clsLoader.loadClass(fqcn); success = true; return loadClass; cls = clsLoader.loadClass(nestedClassName); } catch (final ClassNotFoundException ignored) { inputStream.read(classDefinition); clsLoader.defineClassX(nestedClassName, classDefinition, 0, classDefinition.length); } finally { inputStream.close(); .defineClassX(fqcn, classDefinition, 0, classDefinition.length); cls = clsLoader.loadClass(nestedClassName); inputStream.read(classDefinition); clsLoader.defineClassX(nestedClassName, classDefinition, 0, classDefinition.length);
@Override protected Class<?> findClass(final String name) throws ClassNotFoundException { try { return super.findClass(name); } catch (final ClassNotFoundException e) { try { FileInputStream inputStream = null; final byte[] classDefinition; final File innerClass = new File(searchPath + "/" + name.substring(name.lastIndexOf('.') + 1) + ".class"); if (innerClass.exists()) { try { inputStream = new FileInputStream(innerClass); classDefinition = new byte[inputStream.available()]; inputStream.read(classDefinition); return defineClassX(name, classDefinition, 0, classDefinition.length); } finally { if (inputStream != null) inputStream.close(); } } } catch (final IOException e2) { throw new RuntimeException("failed to load class: " + name, e2); } } throw new ClassNotFoundException(name); } }