2010-02-03 22 views
12

No puedo obtener getResourceAsStream para encontrar un archivo. He puesto el archivo en el directorio de nivel superior, el directorio de destino, etc., y lo he probado con un "/" al frente también. Cada vez que devuelve nulo.Eclipse getResourceAsStream que devuelve nulo

¿Alguna sugerencia? Gracias.

public class T { 
public static final void main(String[] args) { 

    InputStream propertiesIS = T.class.getClassLoader().getResourceAsStream("test.txt"); 

    System.out.println("Break"); 
} 
} 

Respuesta

12

Ponga su archivo "test.txt" en el mismo directorio donde está el archivo java de su clase (mismo paquete). Luego use

T.class.getResourceAsStream("test.txt"); 

Esto funciona, porque eclipse copia automáticamente el archivo como un recurso al classpath. Al usar la línea de comando, debes hacer esto a mano.

+0

GRACIAS ...por favor, puede explicar por qué no está funcionando con T.class.getClassLoader(). getResourceAsStream .. – Chris

+4

Si usa 'Class.getResourceAsStream (name)', 'name' se resuelve internamente. "test.txt" se transforma en "my/package/test.txt" y "/test.txt" se transforma en "test.txt". Luego se llama a 'ClassLoader.getResourceAsStream()' con el nombre transformado. Su código debería funcionar con ambos métodos, pero debe verificar que su archivo "test.txt" permanezca en el lugar correcto (dentro de su classpath). Con su llamada, debe poner "test.txt" dentro de su directorio de paquetes de nivel superior. – tangens

+0

Yahoooo Ahorre mi día –

0

También asegúrese de que su archivo no coincida con ningún patrón de Preferencia> Java> Compilador> Edificio> OutputFolder> Recursos filtrados:.

Por ejemplo, si configura * .txt en ese campo, no obtendrá test.txt para la salida de compilación.

3

A veces necesita decirle a eclipse explícitamente qué tipos de archivos copiar de la carpeta de origen a la carpeta de distribución (clases).

tengo Eclipse SDK, Versión: 3.7.1, Construir Identificación: M20110909-1335, Indigo y en este hice los siguientes cambios.

Proyecto -> Propiedades -> Java Build Path -> Fuente (ficha) -> Incluido (elemento de la lista) -> Editar (botón) para añadir * / .txt a la / .java * existente.

9

No debería necesitar agregar estos archivos al mismo directorio para que funcione.

Estaba obteniendo este síntoma cuando creé un nuevo paquete y carpeta de origen para llevar a cabo mis pruebas junit. Las pruebas fallarían porque getResourceAsStream devolvía nulo.

Así es como solucionarlo:

Haga clic en la clase (en mi caso, la nueva clase de prueba JUnit) en el Eclipse Explorador de proyectos Vista Ruta

Build -> Configurar Build Path -> Ruta de compilación Java -> Pestaña Origen -> Agregar carpeta

Seleccione la carpeta que contiene sus archivos.

0

Al poner mi carpeta/resources/en mi carpeta/bin/resolvió este problema para mí.

0

Pregunta anterior, pero tuve el mismo problema y ninguna de las respuestas funcionó para mí (o no las entendí).

En Eclipse, actualice actualice el directorio del proyecto para hacer que Eclipse sepa que se ha agregado un nuevo archivo a los recursos. Para esto, haga clic derecho en el directorio del proyecto (más arriba) en la vista del explorador de paquetes, luego presione "Actualizar". Lo mismo si edita un archivo de recursos existente desde fuera de eclipse: actualice para que eclipse esté al tanto de las ediciones.