L'ajout de ressources dans IntelliJ pour projet Maven
J'ai un projet de structure comme ceci:
src
|-main
|-java
|-com.abc.xyz
|-Login.java
J'ai du ajouter un fichier de ressources et lisez la ressource avec
InputStream is = getClass().getResourceAsStream("launchers.properties");
C'est donner de la valeur null.
À l'Ide, je ne suis pas en mesure d'ajouter un nouveau package sous src/main
pour resources
dossier
que le projet de la structure ressemble à ceci. Comment puis-je charger le launchers.properties
le fichier de ressources dans le projet?
src
|-main
|-java
|-com.abc.xyz
|-Login.java
|-resources
|-com.abc.xyz
|-Login
|-launcher.properties
J'ai essayé la solution proposée par @maba, mais toujours pas de travail
- Avez-Vous eu une réponse pour le problème?
- a très satisfaisant de la réponse, et cela a fonctionné dans mon cas.
- Vous avez besoin pour commencer votre chemin à partir de la src. Voir ma réponse ici
- C'est quelque chose d'un outil de construction, comme Maven n'est pour vous - JDK ne fait pas de ressources "disponibles" automatiquement autant que je sache.
Vous devez vous connecter pour publier un commentaire.
La
launcher.properties
ne doit pas être sous-dossier nomméLogin
. Il doit être placé directement dans lesrc/main/resources/com/abc/xyz
dossier.Il est vraiment aussi simple que je l'ai dit, mais si le dossier de ressources n'est pas marqué comme un dossier sources alors c'est peut-être le problème.
C'est le premier de la classe et de l'installation:
Maintenant créer le dossier de ressources:
Ce dossier nouvellement créé doit être automatiquement marqués en tant que sources de dossier et si il est de couleur bleu marqué puis c'est tout. Sinon, vous devrez marquer manuellement:
Maintenant, vous serez capable d'ajouter des paquetages:
Et maintenant vous pouvez ajouter le fichier:
Et en relançant l'application ne vous sera d'aucun
null
valeur de retour:Et la vue package va sûrement montrer la
launchers.properties
fichier ainsi:Packages
je ne vois pas les propriétés de fichier xyz. Je suis en supposant que le fichier de propriétés n'est pas disponible pour la classe. Le problème, à mon avis, c'est que n'étant pas en mesure de créer un package sousresources
répertoire.resources
est pour les ressources, et ne doit pas contenir des paquets source.Comme @maba a souligné, les propriétés de votre fichier doit être dans le même package que la classe de votre code.
Donc, vous devez avoir deux fichiers:
Si l'Ide est de montrer les ressources ou non est à côté de la question. Ce que vous devez faire est de vérifier si les résultats sont inclus dans votre cible artefact.
Faire un
build all
dans IntelliJ, ouvrir la résultante de la GUERRE/JAR/OREILLE avec votre favori ZIP spectateur et de naviguer dans la "com/abc/xyz" le dossier. Vous devriez voir les deux fichiers.launchers.properties
est dans le chemin de classe avec la structure pointée par @maba. Mais toujours dans le code de la valeur null est retournée. Est-il a quelque chose à voir avec UiAutomator, comme je suis de la création du projet en java pour exécuter UiAutomator cas de test.classes
répertoire. Mais je ne parviens pas à trouver com/abc/xyz dans le bocal. Permettez-moi de vérifier pourquoi.Pas..... la structure est mal.... vous ne devez pas créer le même package sous
resources
, c'est moche et pas bon:resources
est pour les ressources, et ne doit pas contenir des paquets source.Lors de l'utilisation de
ClassLoader.getResources(asStream)(path)
méthode, la méthode commence la recherche à partir de la racine du classpath et le nom de chemin d'accès ne peut pas démarrer, avec/
comme personnages principaux. Ce que vous avez à faire, c'est pour marquer leresources
commeresources folder
à l'Ide. Ensuite, les fichiers sousresources
seront inscrits en vertu de chemin de classe et vous pouvez facilement l'utiliser comme vous l'avez fait.(Je le vois dans les réponses précédentes, cette option n'est pas encore disponible en 2013, vous n'avez
mark as source folder
, tout comme dans Eclipse jusqu'à maintenant, nous avons "ajouter dossier source", mais maintenant, en 2018, il est disponible à l'Ide: vous pouvez marquer un dossier comme source, les ressources, la source de test, test de ressources, et chacun d'eux sera ajouter à la racine du classpath. )J'ai eu le même problème et a remarqué que le fichier de ressources, par exemple:
my.properties
n'est pas copié dans le module correspondant dans le dossier detarget
répertoire après la construction occurres. Pour résoudre cela, j'ai dû indiquer à Maven pour copier les ressources à partir du répertoire du module à latarget
répertoire pendant le processus de génération. Dans le.pom
fichier que j'ai ajouté<resource>
élément comme ça:Noter que le
<directory>
élément est relatif à l'emplacement de la.pom
fichier , c'est à dire le répertoire racine du projet, et le<targetPath>
élément indique le nom du package séparés par des barres obliques.à partir du menu Exécuter/modifier la configuration
dans VM option, vous devez ajouter
-Dspring.config.emplacement=chemin de fichier
Je l'ai essayé dans IntelliJ, et ça marche!!!