2010-11-25 3 views
0

Ich weiß, dass dies eine Million Mal beantwortet worden sein muss, aber ich kann es nirgends finden. So, hier geht:Java-Code-Schnipsel zum Lesen der Datei vor und nach dem Verpacken in ein Glas

this.getClass().getResourceAsStream("/foo.txt") 

das funktioniert gut, bis ich es in eine JAR-Datei verpacken: in meinem junit Test ich diese die Datei foo.txtzuzugreifen. Wie sollte ich meinen Code so bearbeiten, dass er in beiden Fällen funktioniert?

Dank viel

+2

Wo ist foo.txt wenn Sie Ihren cod in ein Glas? –

+0

im Ordner 'src' – seminolas

+0

@seminolas legte es in den Stamm von Jar –

Antwort

2

Überprüfen Sie, ob Ihre foo.txt in Wurzel Ihrer JAR-Datei verpackt ist. Ich denke, dass diese Datei wahrscheinlich in Dateisystem vorhanden ist, wenn Sie also den Code von IDE ausführen, funktioniert es, aber aus irgendeinem Grund ist es nicht in Jar.

Mögliche Ursache ist, wenn Sie jar mit ant-Skript erstellen und das include-Muster als * .class konfigurieren.

+0

nein, 'foo.txt' befindet sich im Wurzelverzeichnis der JAR-Datei – seminolas

0

Sicherstellen, dass die Textdatei in dem Glas verpackt ist:

test.jar => 
    -> META-INF/MANIFEST.MF 
    -> com/somepackage/ClassThatLoadsFooTxt.class 
    -> foo.txt 

Wenn die Klassendatei und foo.txt im src Ordner wie folgt enthalten sind:

-> src/com/somepackage/ClassThatLoadsFooTxt.class 
    -> src/foo.txt 

sicherstellen, dass der Class-Path Eintrag in Ihre MANIFEST.MF zeigt auf src:

Class-Path: src/ 
+0

yep, so sieht es aus – seminolas

+0

@seminolas siehe die aktualisierte Antwort. –

+0

Klassenpfadeintrag ist irrelevant (und falsch - in der JAR-Datei ist kein Verzeichnis "src" vorhanden) –

Verwandte Themen