web-dev-qa-db-fra.com

Java dans Eclipse: où dois-je placer les fichiers sur le système de fichiers que je veux charger en utilisant getResource? (Par exemple, des images pour un ImageIcon)

Je sais que le fichier doit être là où getClass (). GetResource (nom de fichier) peut le trouver, mais je ne sais pas où il se trouve.

Je m'intéresse à la fois où placer les fichiers sur le système de fichiers lui-même et comment utiliser les fonctionnalités d'Eclipse pour configurer les ressources.

50
Andrew Larned

Pour Eclipse, il vous suffit généralement de configurer un dossier quelque part dans votre répertoire de code source. Par exemple, si le répertoire contenant votre source est /src, Vous pouvez créer un dossier /src/resources Pour y placer vos images/fichiers. Ensuite, dans votre classe, vous effectuez une getResource("/resources/image.png") pour le récupérer.

Vous pouvez également placer l'image/fichier dans le même dossier/package que la classe essayant d'y accéder si vous le souhaitez (exemple: placez l'image.png dans le package com.mycompany Avec la classe com.mycompany.Foo qui doit y accéder et appeler getResource("image.png")), mais j'ai trouvé qu'il est plus facile de conserver des ressources comme des images et d'autres fichiers dans leur propre répertoire spécial en dehors des dossiers de classe - ils sont simplement plus faciles à gérer de cette façon.

Dans Eclipse, chaque fois que vous effectuez une génération, les fichiers de ce répertoire de ressources seront copiés dans votre répertoire de génération avec vos classes compilées.

Il est important de noter que si vous avez "Build Automatically" activé dans Eclipse (comme la plupart des gens), toutes les ressources de ce répertoire qui sont modifiées en dehors d'Eclipse (c'est-à-dire que vous modifiez une image à l'aide d'un outil d'édition d'image) que le IDE peut ne pas toujours détecter cette modification. Habituellement, une actualisation du dossier de projet garantit que le fichier est mis à jour dans la génération dans ces situations.

62
BCunningham

Vous pouvez soit les placer dans le dossier src à côté de vos classes, soit créer un nouveau dossier source à cet effet (généralement appelé ressources), bien que vous les localisiez de manière identique à partir du code.

Ensuite, vous y accédez en utilisant getResource("/com/x/y/foo.png").

7
jodonnell