private Map<String, Merger<?>> initMerger() throws Exception {
final Map<String, Merger<?>> mergers = new HashMap<String, Merger<?>>();
final ClassLoader cl = new URLClassLoader(new URL[] { getClass().getProtectionDomain().getCodeSource().getLocation() }, ClassLoader.getSystemClassLoader());
final AbstractFinder finder = new ClassFinder(cl, true).link();
final List<Class> foundMergers = finder.findSubclasses((Class) cl.loadClass(Merger.class.getName()));
for (Class<? extends Merger> m : foundMergers) {
try {
// reload the class with the current classloader to avoid to miss some dependencies
// excluded to scan faster