resource getresourceasstream from files java resources

getresourceasstream - java resources folder



Class.getResource y ClassLoader.getSystemResource: ¿hay alguna razón para preferir uno a otro? (3)

Vi que se Class.getResource y ClassLoader.getSystemResource para ubicar un recurso en Java. ¿Hay alguna razón para preferir uno a otro?


ClassLoader.getSystemResource() usará el cargador de clases bootstrap (sistema).

Class.getResource() usará esa instancia particular del cargador de Class de la Class , en otras palabras, cualquier cargador de clases fue utilizado para cargar esa clase. Este puede ser un cargador de clases diferente del cargador de clases del sistema.


De Class.getResource( )

Este método delega la llamada a su cargador de clases, después de realizar estos cambios en el nombre del recurso: si el nombre del recurso comienza con "/", no se modifica; de lo contrario, el nombre del paquete se antepone al nombre del recurso después de convertir "." a "/". Si este objeto fue cargado por el cargador de arranque, la llamada se delega a ClassLoader.getSystemResource .

y ClassLoader.getSystemResource( )

Encuentre un recurso del nombre especificado de la ruta de búsqueda utilizada para cargar clases. Este método ubica el recurso a través del cargador de clases del sistema


Hay varias formas de cargar recursos, cada uno con un significado ligeramente diferente:

ClassLoader::getSystemResource() usa el cargador de clases del sistema. Esto utiliza el classpath que se utilizó para iniciar el programa. Si se encuentra en un contenedor web como tomcat, esto NO recogerá recursos de su archivo WAR.

Class<T>#getResource() antepone el nombre del paquete de la clase al nombre del recurso y luego lo delega a su cargador de clases. Si sus recursos están almacenados en una jerarquía de paquetes que refleja sus clases, use este método.

ClassLoader#getResource() delega en su cargador de clases padre. Esto eventualmente buscará el recurso hasta el cargador de clases del sistema.

Si está confundido, simplemente ClassLoader#getResource() en ClassLoader#getResource()