How To Load All The Resources From Within a Package
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jetbrains.annotations.Nullable;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.jar.JarFile;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class Initializer  {

    private static final Log LOG = LogFactory.getLog(Initializer.class);

    /**
     * gets the  xmls
     *
     * @return
     */
    private Set<String> getXmls() {

        final Set<String> xmls = new LinkedHashSet<String>();
        try {
            final Class<? extends Object> clazz = Initializer.class;
            final String className = clazz.getSimpleName() + ".class";
            final String classPath = clazz.getResource(className).toString();
            if (classPath.startsWith("jar")) {
                LOG.info("loading  xml's from the jar");
                final String xmlPath = "<your path>";
                final String path = Thread.currentThread().getContextClassLoader().getResource(xmlPath).toString();
                final String jarFilePath = path.substring(path.indexOf("/"), path.indexOf("!"));

                final ZipFile zipFile = new JarFile(jarFilePath);

                for (final Enumeration<? extends ZipEntry> enumeration = zipFile.entries(); enumeration.hasMoreElements();)
                {
                    final ZipEntry zipEntry = enumeration.nextElement();
                    final String name = zipEntry.getName();
                    if (!name.startsWith(xmlPath) || !name.endsWith(".xml")) {
                        continue;
                    }

                    LOG.info("loading l xml name=" + name);
                    final StringBuilder builder = getStringBuilderFromFileNameJar(name);
                    xmls.add(builder.toString());
                }
            } else {

                final String[] fileNames = getXMLFileNames();

                for (final String fileName : fileNames) {
                    final StringBuilder builder = getStringBuilderFromFileNameFolder(fileName);
                    xmls.add(builder.toString());

                }
            }
        } catch (final Exception e) {
            LOG.error("ERROR Loading the  XML from within the jar");
            LOG.info("getXML error: ", e);
        }
        return xmls;
    }

    private StringBuilder getStringBuilderFromFileNameFolder(final String fileName) {
        final InputStream asStream = this.getClass().getResourceAsStream(fileName);

        try {
            return load(asStream, fileName);
        } finally {
            try {
                asStream.close();
            } catch (IOException e) {
                LOG.error(e);
            }
        }

    }

    @Nullable
    private StringBuilder getStringBuilderFromFileNameJar(final String resourceName) {

        final InputStream asStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceName);

        try {
            return load(asStream, resourceName);
        } finally {
            try {
                asStream.close();
            } catch (IOException e) {
                LOG.error(e);
            }
        }
    }

    private StringBuilder load(InputStream asStream, String resourceName) {
        final StringBuilder builder = new StringBuilder();

        // about 10K
        byte b[] = new byte[1024 * 10];
        do {
            try {
                final int len = asStream.read(b, 0, b.length);

                if (len == -1)
                    break;

                builder.append(new String(b, 0, len));
            } catch (final IOException e) {
                LOG.error("unable to read " + resourceName);
            }
        } while (true);

        return builder;
    }

    private String[] getXMLFileNames() {
        final URL dirURL = getDir();
        final String[] fileNames;

        final FilenameFilter filter = new FilenameFilter() {

            public boolean accept(final File dir, final String name) {
                return name.endsWith(".xml"); // To change body of implemented
            }
        };

        // do if we are in a jar we will have to come up with another way to get
        // the list of files
        try {
            fileNames = new File(dirURL.toURI()).list(filter);
        } catch (final URISyntaxException e) {
            throw new IllegalStateException("unable to load  xmls", e);
        }
        return fileNames;
    }

    private URL getDir() {
        return this.getClass().getClassLoader().getResource("<root path>");
    }

     public static void main(final String... arg) {
        System.out.println(new Initializer().getXmls());
    }
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License