2010-11-25 6 views
0

Je sais que cela a dû être répondu un million de fois, mais je ne peux pas sembler le trouver n'importe où. Alors, voici: dans mon test JUnit J'ai ce pour accéder au fichier foo.txt:extrait de code java pour lire le fichier avant et après l'empaquetage dans le pot

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

cela fonctionne bien jusqu'à ce que je l'emballer dans un fichier jar. comment dois-je éditer mon code pour qu'il fonctionne dans les deux cas?

merci beaucoup

+2

Où est foo.txt lorsque vous avez emballé votre morue e dans un pot? –

+0

dans le dossier 'src' – seminolas

+0

@seminolas l'a mis à la racine de Jar –

Répondre

2

Vérifiez que votre foo.txt est emballé dans la racine de votre fichier jar. Je pense que ce fichier est probablement présent dans le système de fichiers, donc quand vous exécutez le code à partir d'IDE cela fonctionne, mais pour une raison quelconque, il n'est pas en jar.

La raison possible est que vous créez un fichier jar à l'aide du script ant et que vous configurez le modèle d'inclusion en tant que * .class.

+0

non, 'foo.txt' est dans la racine du fichier jar – seminolas

0

Assurez-vous que le fichier texte est emballé dans le pot:

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

Si le fichier de classe et foo.txt est contenu dans le dossier src comme ceci:

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

assurez-vous que l'entrée Class-Path dans vos points MANIFEST.MF à src:

Class-Path: src/ 
+0

oui, c'est à quoi ça ressemble – seminolas

+0

@seminolas s'il vous plaît voir la réponse mise à jour. –

+0

L'entrée de chemin de classe est non pertinente (et incorrecte - il n'y a pas de répertoire "src" dans le fichier JAR) –

Questions connexes