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));
}