¿Cómo obtengo una lista de paquetes y / o clases en el classpath?

En Java, puedo usar un ClassLoader para obtener una lista de las clases que ya están cargadas y los paquetes de esas clases. Pero, ¿cómo obtengo una lista de clases que podrían cargarse, es decir, están en el classpath? Lo mismo con los paquetes.

Esto es para un compilador; al analizar foo.bar.Baz, quiero saber si foo es un paquete para distinguirlo de cualquier otra cosa.

Respuestas a la pregunta(3)

Su respuesta a la pregunta