getClass().getResourceAsStream() dans le projet maven
L'pom.xml de mon projet maven se présente comme suit:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
Dans le répertoire src/main/resources répertoire, j'ai un fichier nommé test.
Dans le répertoire src/main/java répertoire j'ai une classe qui contient la ligne suivante:
System.out.println(this.getClass().getResourceAsStream("test"));
Lorsque la ligne de code est exécuté au sein d'Eclipse, j'obtiens en sortie
java.io.BufferedInputStream@1cd2e5f
Lorsque j'exporte le projet .jar et exécuter ce que je reçois en tant que sortie
null
Ai-je configurer quelque chose de mal?
C'est la classe de test unitaire ou d'une véritable classe productive? Je suppose une classe productive. Que vous avez à changer les getResourcesAsStream("test") dans getResourcesAsStream("/test");
vous avez raison... mais pourquoi est-ce de travailler avec eclipse ???
Est-ce la ressource de test situé dans le src/main/resources dossier ou dans src/test/resources dossier avec ou sans nom de package? En outre, vous n'avez pas besoin de configurer le src/main/java, ni src/main/resources dossier, parce qu'ils sont par défaut de maven.
vous avez raison... mais pourquoi est-ce de travailler avec eclipse ???
Est-ce la ressource de test situé dans le src/main/resources dossier ou dans src/test/resources dossier avec ou sans nom de package? En outre, vous n'avez pas besoin de configurer le src/main/java, ni src/main/resources dossier, parce qu'ils sont par défaut de maven.
OriginalL'auteur hansi | 2013-02-05
Vous devez vous connecter pour publier un commentaire.
Sous
<build><resources>
assurez-vous d'avoir la<include>
comme ci-dessousCe sera explicitement indiquer à maven pour récupérer ces fichiers et de les inclure dans la construction.
**/*
OriginalL'auteur Milind J
J'ai eu cette erreur mais par tonne de Googler, je ne pouvais pas trouver la solution.
Toutes les réponses sont sur le chemin, personne ne se soucie qu'Il peut fonctionner dans Eclipse, mais pas dans l'export de fichier jar 🙁
Mais maintenant j'ai trouvé une solution toute simple:
Dans Eclipse, cliquez droit sur votre projet maven-> Propriétés -> Java build path -> Onglet Source
Vous pouvez voir un arbre comme :
Double-cliquez sur
Included (**/*.java)
, supprimer l'existant afin de devenirIncluded (All)
Maintenant exporter le fichier jar 🙂
OriginalL'auteur yelliver
J'ai été confronté à ce même problème.
Lorsque vous essayez d'obtenir la ressource de ce genre:
getClass().getResourceAsStream("test")
Vous essayez de trouver la ressource par rapport à cet ensemble.
Pour obtenir la ressource de la
src/main/resources
répertoire, vous devez mettre un slash avant le nom de la ressource.getClass().getResourceAsStream("/test")
OriginalL'auteur Rito