Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2013, 00:31
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Duda al obtener resources con rutas relativas?

Hola:

Si el recurso está dentro del jar, puedes usar rutas relativas o absolutas, puesto que estas últimas siempre empiezan en el principio del jar y no hacen en ningúan caso referencia al disco duro, al usb ni a nada.

Si obtienes el classloader de una clase, debes usar rutas relativas .. a donde esté ubicada esa clase dentro del jar. Para evitar esto, puedes poner un / delante, usando un path absoluto dentro del jar (en tu caso con una / delante getResourceAsStream("/resources/fichero.txt"); O en tu caso, si tu clase está en paquete, entonces igual tienes que poner getResourceAsStream("../resources/fichero.txt") para hacer que del directorio "paquete" nos vayamos al raíz.

Si obtienes el classloader de ClassLoader.getContextClassLoader(), entonces no es el classloader de una clase y los recursos se buscarán en el raíz del jar y no tienes que poner la / , pero el path será absoluto dentro del jar, es decir ClassLoader.getClassLoader().getResourceAsStream(" resources/fichero.txt");

http://micro-blog.chuidiang.org/cont...sourceasstream

Cuando estás en netbeans lo encuentra porque si los classloader no lo encuentran siempre se acaba llamando al SystemClassLoader que busca en los directorios normales del disco y cuando corres en netbeans, el resources no está metido en un jar, sino en el disco duro como un fichero normal dentro del classpath y el system class loader lo encuentra.

http://www.techdarwinia.com/java-cla...xt-classloader

Se bueno.
__________________
Apuntes Java
Wiki de Programación