Estás usando un separador de sistema con un recurso de Java, lo que no es correcto.
https://docs.oracle.com/javase/8/docs/api/java/io/File.html#separatorChar
Para recursos usa siempre el caracter /
http://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html#getResource-java.lang.String-
"The name of a resource is a '/'-separated path name that identifies the resource.
Échale un vistazo a esta explicación:
http://blogs.atlassian.com/2006/12/how_to_use_file_separator_when/
Gracias
Hola, alguien puede explicarme cómo funciona la ruta hacia un recurso en un proyecto java y al exportarlo a su respectivo jar ?
El hecho es que esto:
btnCerrar.setIcon( new ImageIcon(MainWindow.class.getResource(
"src"+File.separator+"images"+File.separator+"icons"+File.separator+"x.png")));
me da nullPointer (que no encuentra la ruta),
En cambio estos dos no:
btnCerrar.setIcon( new ImageIcon(MainWindow.class.getResource(
"images/icons/x.png"))); --> funciona en eclipse y en .jar
btnCerrar.setIcon( new ImageIcon("src/images/icons/x.png")); ->solo funciona en eclipse
Pero , porque cuando exporto el jar, si le cambio la extensión a rar o zip, y lo abro, en la barra de direcciones, la barra es como la de Windows ' \ '. Pero dentro de eclipse es ' / '.
Se supone (y lei por algun foro) que System.getProperty(File.separator) sirve justamente para que la ruta sea valida en mas de un SO (Windows y Linux)