returns getclass java eclipse classpath classloader inputstream

java - getclass - ClassLoader getResourceAsStream devuelve null



classloader getresource null (2)

Si está en el mismo paquete de uso.

InputStream is = Driver.class.getResourceAsStream("myconfig.txt");

La forma en que lo tienes

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt");

Está buscando el archivo en la raíz del classpath. Usted podría usar

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt");

Las reglas para la búsqueda se explican en el javadoc de ClassLoader#getResource(String) y el javadoc de Class#getResource(String) .

La estructura del directorio de mi proyecto (en Eclipse):

MyProject/ src/ --> "source directory" on Eclipse''s classpath/buildpath com.me.myapp Driver myconfig.txt

En Driver , tengo el siguiente código:

public class Driver { public static void main(String[] args) { InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt"); if(is == null) System.out.println("input stream is null"); else System.out.println("input stream is NOT null :-)"); } }

Cuando ejecuto esto obtengo la siguiente salida de consola:

input stream is null

¿Por qué? ¿He colocado myconfig.txt en una ubicación incorrecta? ¿Estoy usando la API de ClassLoader incorrectamente? ¿Algo más? ¡Gracias por adelantado!


Si está trabajando con Maven, agregue las siguientes líneas debajo de la etiqueta BUILD . Obtiene este error cuando está ejecutando la aplicación web en el servidor, pero no hay ninguna referencia a los recursos en el servidor.

Entonces, agrega esto a tu POM.xml y ve la magia.

<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>fileName.txt</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>fileName.wsdl</include> </includes> </resource> </resources>

Que te diviertas.!!!