Acessando um Recurso Java como um Arquivo

Estou tentando acessar um recurso do caminho da classe / arquivo JAR como um objeto File. Estou ciente de que é o método preferido para usar um objeto InputStream, mas estou usando uma biblioteca externa (WorldEdit) que precisa de um objeto File.

Aqui está meu 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());

Agora, enquanto eu ainda estou dentro do eclipse, ambas as formas de acessar o recurso funcionam perfeitamente e produzem essa saída:

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

Mas depois de exportar o código para um arquivo JAR, o código falha:

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)

Então, eu fui, sem sucesso, procurando uma maneira de acessar o recurso como um arquivo diretamente, ou indo o caminho de usar um InputStream e convertendo esse InputStream para um arquivo.

A solução de fallback do pior caso seria copiar o InputStream para um arquivo no sistema de arquivos e, em seguida, abrir esse arquivo, mas espero que isso não seja necessário.

questionAnswers(3)

yourAnswerToTheQuestion