Cómo extraer una carpeta de JAR

Necesito copiar una carpeta, empaquetada en un Jar en tiempo de ejecución. Quiero hacerlo llamando a una función en una clase que también está contenida en la misma carpeta.

He intentado usargetSystemResource:

URL sourceDirUrl = ClassLoader.getSystemResource("sourceDirName"); 
File sourceDir = new File(sourceDirUrl.toURI());

pero no funciona. Probablemente tenga que usargetResourceAsStream función recursivamente. ¿Hay una manera más elegante / directa de hacer esto?

En caso de que tenga que hacerlo de forma recursiva: 1. No quiero especificar los archivos codificados, quiero hacerlo dinámicamente 2. No quiero crear un archivo separado. Quiero que este recurso esté en el mismo frasco que las clases que lo tratan

Gracia

Terminé haciendo lo que Koziołek sugirió a continuación. Aunque esperaba una solución más elegante, parece que esto es lo mejor posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta