Accediendo a un recurso Java como un archivo

Estoy tratando de acceder a un recurso desde la ruta de clase / archivo JAR como un objeto de Archivo. Soy consciente de que es el método preferido para usar un objeto InputStream en su lugar, pero estoy usando una biblioteca externa (WorldEdit) que necesita un objeto File.

Aquí está mi código:

InputStream templStream = "".getClass().getResourceAsStream("/res/template.prom");
System.out.println("templateStream: " + templStream.toString());
File templFile = new File("".getClass().getResource("/res/template.prom").toURI());
System.out.println("templateFile: " + templFile.canRead());

Ahora, mientras todavía estoy dentro de eclipse, ambas formas de acceder al recurso funcionan perfectamente y producen esta salida:

templStream: java.io.BufferedInputStream@746d1683
templFile: true

Pero después de exportar el código a un archivo JAR, el código falla:

templStream: sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@47aa261b
Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
    at java.io.File.<init>(File.java:392)
    at SMCToPROM.main(SMCToPROM.java:101)

Así que, sin éxito, he estado buscando una forma de acceder directamente al recurso como un archivo, o de utilizar un InputStream y convertir ese InputStream en un archivo.

La solución alternativa de peor caso sería copiar InputStream a un archivo en el sistema de archivos y luego abrir ese archivo, pero espero que no sea necesario.

Respuestas a la pregunta(3)

Su respuesta a la pregunta