Quel est le chemin d'accès aux fichiers de ressources dans un projet Maven?

Dans mon projet Maven, j'ai le code suivant dans la méthode principale:

FileInputStream in = new FileInputStream("database.properties");

Mais toujours obtenir un fichier introuvable erreur.

J'ai mis le fichier dans src / main / resources et il est correctement copié dans le répertoire target/classes (je crois que c'est le comportement attendu pour les ressources Maven) mais lors de l'exécution du programme, il semble qu'il ne puisse jamais trouver le fichier. J'ai essayé divers autres chemins:

FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");

Etc. mais rien ne semble fonctionner.

Alors, quel est le bon chemin d'accès à utiliser?


Basé sur la réponse de" disown " ci-dessous, voici ce dont j'avais besoin:

InputStream in = TestDB.class.getResourceAsStream("/database.properties")

TestDB est le nom de la classe.

Merci pour votre aide, désavouer!

32
demandé sur ArtB 2010-06-23 22:55:07

1 réponses

Vous ne pouvez pas charger le fichier directement comme ça, vous devez utiliser l'abstraction de Ressource (une ressource pourrait non seulement être dans le système de fichiers, mais sur n'importe quel endroit sur le classpath - dans un fichier jar ou autrement). Cette abstraction est ce que vous devez utiliser lors du chargement des ressources. Les chemins des ressources sont relatifs à l'emplacement de votre fichier de classe, vous devez donc ajouter une barre oblique pour accéder à la racine:

InputStream in = getClass().getResourceAsStream("/database.properties");
53
répondu Alexander Torstling 2010-06-23 19:04:45