private static void fillBootstrapJar(File file) throws IOException {
        try (JarOutputStream jar = new JarOutputStream(new FileOutputStream(file))) {
            String manifest = "Main-Class: " + ForkServer.class.getName() + "\n";
            jar.putNextEntry(new ZipEntry("META-INF/MANIFEST.MF"));
            jar.write(manifest.getBytes(UTF_8));

            Class<?>[] bootstrap = {ForkServer.class, ForkObjectInputStream.class, ForkProxy.class,
                    ClassLoaderProxy.class, MemoryURLConnection.class, MemoryURLStreamHandler.class,
                    MemoryURLStreamHandlerFactory.class, MemoryURLStreamRecord.class,
                    TikaException.class};
            ClassLoader loader = ForkServer.class.getClassLoader();
            for (Class<?> klass : bootstrap) {
                String path = klass.getName().replace('.', '/') + ".class";
                try (InputStream input = loader.getResourceAsStream(path)) {
                    jar.putNextEntry(new JarEntry(path));
                    IOUtils.copy(input, jar);
                }
            }
        }
    }
Fills in the jar file used to bootstrap the forked server process.
All the required <code>.class</code> files and a manifest with a
<code>Main-Class</code> entry are written into the archive.

@param file file to hold the bootstrap archive
@throws IOException if the bootstrap archive could not be created
tika-core/src/main/java/org/apache/tika/fork/ForkClient.java