Problème de chargement de ressources lors de l'exécution dans Eclipse
Je suis en train de travailler sur une balançoire projet, à l'aide de maven2 (à partir de la ligne de commande) et eclipse (sans maven integration). Donc, je générer le projet eclipse à travers maven plugin eclipse (mvn eclipse:eclipse
), de l'importer à l'intérieur de l'éclipse, et de faire tout mon travail.
Mon problème est le suivant: quand je lance mon application dans eclipse (comme une Application Java), je ne peux pas trouver les ressources qui sont dans mon répertoire src. Creuser pour plus d'informations sur mon problème, je reçois dans cette réponse d'une autre question. Donc, j'ai comparé la sortie de l'une des instructions suivantes:
MyClass.class.getResource("/").getPath();
MyClass.class.getProtectionDomain().getCodeSource().getLocation().toString();
Ceux qui m'ont donné les résultats suivants, respectivement:
${workspace_loc}/${my_project}/cible/test classes/
fichier:/${workspace_loc}/${my_project}/target/classes/
Vérification de l'emplacement ci-dessus, j'ai pu voir que le premier est vide, tandis que l'autre contenait toutes mes classes compilées et de ressources. Donc, je suis venu à la conclusion que le chargeur de classe est à la recherche de mes ressources dans le mauvais endroit. Donc, je pense que j'ai trois questions:
- Est ma compréhension correcte?
- Si oui, comment il fait pour trouver les classes, qu'il est en cours de chargement?
- Comment puis-je résoudre ce problème?
Mise à JOUR: j'ai changé mon code, donc au lieu d'invoquer MyClass.class.getResource(...)
ou MyClass.class.getResourceAsStream(...)
, je suis maintenant en utilisant ClassLoader.getSystemResource(...)
et ClassLoader.getSystemResourceAsStream(...)
. De cette façon, tout fonctionne très bien dans eclipse. Je ne sais pas exactement pourquoi. Toute allusion à ce sujet?
Êtes-vous d'obtenir l'avertissement concernant maven classpath conteneur ?
Il fonctionne très bien lorsque j'utilise mvn exec:java.
Découvrez cette question, presque le même problème, et la accepté de répondre, je pense que permettra de répondre à votre question de savoir pourquoi. stackoverflow.com/questions/2815404/load-properties-file-in-jar
OriginalL'auteur Alexandre | 2011-03-30
Vous devez vous connecter pour publier un commentaire.
Deux cas possibles pour moi :
Vous utilisez eclipse pour compiler votre projet. Puis eclipse est configuré pour exclure (ou non) des ressources dans le dossier src. Vous pouvez la définir dans un Projet/Propriétés/Java Build Path/Source. Ensuite vous consacrer à votre dossier src, et vous assurer que vous avez quelque chose comme "Inclus Tous", "les Exclus Rien".
Vous exécutez votre application à l'aide de maven maven pour compiler et pas eclipse, même si vous utilisez eclipse comme environnement de développement intégré. Ensuite, par défaut de maven de ne pas copier les ressources à partir du dossier source vers le dossier de sortie... Parce que ce n'est pas la norme maven façon de faire les choses. Ainsi, les ressources sont manquantes dans le classpath et vous n'en trouverez pas. Il suffit de changer votre configuration maven comprennent également des ressources à partir de votre dossier source.
OriginalL'auteur Nicolas Bousquet
Je pense que vous devez ajouter
src/main/resources
pour le build path. Ceci est fait dansProject Properties > Build Path > Source
. Voici comment le projet maven standard ressemble:À l'avenir lors de l'utilisation d'Eclipse, je vous suggérons d'utiliser le plugin m2eclipse et de créer un projet à l'aide. Cela va automatiquement assurez-vous que tous ces dossiers sont dans le build path.
Sont vos ressources stockées dans src/main/resources?
Certains d'entre eux. Il en existe d'autres dans le répertoire src/main/java. Plus tard, je vais réorganiser pour être partout dans src/main/resources. C'est le code de legs.
Quelle est la valeur de "Exclut" dans src/main/resources entrée sur le dessus de votre page de configuration du projet?
Ils sont là pour Eclipse pouvez exclure des fichiers selon les configurations indiquées à partir de la compilation/processus de construction
OriginalL'auteur Eugene Ryzhikov
Essayez ceci:
Run configurations... -> chemin de classe -> Entrées Utilisateur -> Avancé... -> Ajouter des Dossiers
OriginalL'auteur jilt3d
Pouvez-vous essayez de charger les ressources à l'aide ci-dessous?
OriginalL'auteur Prabhjot
Cela peut être des informations utiles
Eclipse plugin Maven a son propre chemin de classe Conteneur qui est en conflit avec la classe générée chemins lorsqu'il est activé.
OriginalL'auteur Hardik Mishra
Ce que je suggère, c'est d'arrêter d'utiliser eclipse:eclipse (désolé - dure, je le sais). Je l'ai utilisé pendant environ 8 mois, ne peux pas croire que cela m'a pris longtemps, et utilisé M2Eclipse. M2Eclipse est un plugin eclipse dans lequel vous effectuez les opérations suivantes.
Il peut ne pas sembler, mais son beaucoup plus facile et moins frustrant façon de faire.
Avant, avec eclipse:eclipse. Vous devez l'exécuter puis cliquer sur "actualiser" et espère que tout est configuré - si vous avez un multi-module pom choses peuvent mal se passer.
OriginalL'auteur John Vint
Pour moi les Fichiers dans le dossier WEB-INF sont pas inclus. J'ai donc ajouté à Buildpath (Projet -> Build Path -> Configure Build Path -> Ajouter un dossier (projet/src/main/webapp). Cette résolu le problème.
OriginalL'auteur Vijay Anantharamu