15 de septiembre de 2013

URI is not hierarchical

Si se esta trabajando con recursos en Jar y si se esta haciendo al componente de esta forma:


File file = new File(  MiClase.class.getResource("archivo.ext").toURI() );

Se lanzara la siguiente excepcion en tiempo de ejecucion:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(File.java:392)

        at ............


Dos soluciones que se pueden aplicar:
  • Los recursos no se manejen en el interior del Jar, ya que este es un archivo comprimido.
  • Manejarlos como InputStream.

La segunda forma seria:

InputStream inputStream =  MiClase.class.getResourceAsStream("archivo.ext");


Nota: En el ejemplo de codigo los recursos estan al mismo nivel que la clase.