static void injectBootstrapClasses()

in feline/src/main/java/com/spotify/feline/BytecodeUtils.java [59:85]


  static void injectBootstrapClasses(
      final Instrumentation instrumentation, final String... classNames) throws IOException {
    final File tempJarFile = File.createTempFile("feline", ".jar");
    tempJarFile.deleteOnExit();

    final ClassLoader classLoader = Feline.class.getClassLoader();
    try (final ZipOutputStream zipOutputStream =
        new ZipOutputStream(new FileOutputStream(tempJarFile))) {
      for (final String className : classNames) {
        final String classFile = className.replace(".", "/") + ".class";
        try (final InputStream inputStream = classLoader.getResourceAsStream(classFile)) {
          final ZipEntry entry = new ZipEntry(classFile);
          zipOutputStream.putNextEntry(entry);

          // write class file to ZIP
          final byte[] buffer = new byte[1024];
          int len;
          while ((len = inputStream.read(buffer)) != -1) {
            zipOutputStream.write(buffer, 0, len);
          }
        }

        zipOutputStream.closeEntry();
      }
    }
    instrumentation.appendToBootstrapClassLoaderSearch(new JarFile(tempJarFile));
  }