Riposto il codice scritto per trovare le sottoclassi istanziabili di una certa classe astratta data come argomento.
(Non fate caso ai generics, se non li metto mi da dei warning, ma ancora non ho capito il senso di parametrizzare la classe Class...)
Vorrei modificarlo in modo che funzioni anche dall'interno di un file JAR.

codice:
    public final static <T extends Object> Class[] getSubclasses(Class<T> c) {
        String pacchetto = c.getPackage().getName(); // Nome pacchetto
        String path = c.getResource(".").getFile(); // QUI DA ERRORE: getResource() = null!!!
        System.out.println(path);
        File dir = new File(path); // Trasforma in File
        File[] classi = dir.listFiles(); // Leggi tutti i File nella directory
        ArrayList<Class> istanziabili = new ArrayList<Class>(classi.length);
        Class subclass=null;
        
        for (File f : classi) {
            String r = pacchetto + '.' + f.getName();
            try {
                subclass = Class.forName(r.replaceFirst(".class",""));
                if ( Modifier.isAbstract(subclass.getModifiers()) )
                    continue;
                if (c.isAssignableFrom(subclass)) // subclass e' assegnabile a c
                    istanziabili.add(subclass);
            } catch (Throwable t) {}
        }
        Class[] lista = new Class[istanziabili.size()];
        lista = istanziabili.toArray(lista);
        return lista;
    }
Mi date una mano?
L'errore e' alla terza riga... sigh...