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.!!!