# getResourceAsStream - standalone Anwendung vs. Web-Anwendung



## Beren77 (25. Aug 2008)

Hallo,

wir entwickeln im Moment eine API. Diese API muss an einer Stelle konfigurierbare Properties laden.
Für den Apache Tomcat funktioniert folgender Code problemlos:


```
class Config {
  public Config() {
    InputStream is = this.getClass().getResourceAsStream("/config.txt");
    System.out.println(is);
  }
}
```

Die config.txt wird im Web-Apps Verzeichnis gesucht und gefunden (genauer gesagt in dem Verzeichnis, in dem unsere Anwendung steht) (is != null).

Wird die API aber von einer Standalone-Anwendung aus aufgerufen, wird die entsprechende Datei, obwohl sie im Hauptverzeichnis der Anwendung liegt, nicht gefunden (is == null).

Gibt es einen Weg, um sicher zu stellen, dass die Datei sowohl im Standalone als auch in der Web-Anwendung gefunden wird?

Danke!
Beren


----------



## kleiner_held (25. Aug 2008)

Anscheindend befindet sich bei der Standalone-Anwendung die Datei bzw das Verzeichnis in dem die Datei liegt nicht im Classpath. Also entweder muss der Classpath angepasst werden oder die Implementierung enthaelt einen Fallback, wenn die Datei nicht im Classpath gefunden wird (is == null) denn wird per FileInputStream im Arbeitsverzeichnis der Anwendung gesucht.


----------



## Beren77 (25. Aug 2008)

Prima. Danke.

Es verhält sich so: Das Projekt ist unter Eclipse entwickelt und wir haben src/ und bin/ folder. Standardmäßig ist der classpath (offensichtlich) so definiert, dass der bin/ folder als Root benutzt wird. D.h. bin/config.txt würde mit obigem code-Beispiel ohne Weiteres gefunden werden.
Nun habe ich den Classpath angepasst (danke für den Tipp!) und schon wird die Datei auch im richtigen Verzeichnis gefunden.

Ist zwar insofern blöd, als dass nun jeder Benutzer unserer API diese Anpassung machen muss, aber egal...


----------

