L'obtention d'un BufferedImage comme une ressource afin qu'il fonctionne dans le fichier JAR
Je suis en train de charger une image dans mon application java comme un BufferedImage, avec l'intention d'avoir travailler dans un fichier JAR. J'ai essayé d'utiliser ImageIO.read(new File("images/grass.png"));
qui a travaillé dans l'IDE, mais pas dans le POT.
J'ai aussi essayé de
(BufferedImage) new ImageIcon(getClass().getResource(
"/images/grass.png")).getImage();
qui n'est pas le même travail dans l'IDE à cause d'une NullPointerException. J'ai essayé de le faire avec ../images /images, et les images dans le chemin d'accès. Aucun de ces travaux.
Suis-je manqué quelque chose?
D'où vient l'image en direct? Si vous utilisez eclipse, existe-t-elle dans le répertoire de ressources? Si vous êtes à l'aide de NetBeans, existe-t-elle dans le dossier de l'arc
À l'aide d'Eclipse, images, c'est sa propre dossier en dehors du dossier src, mais dans le dossier du projet.
À l'aide d'Eclipse, images, c'est sa propre dossier en dehors du dossier src, mais dans le dossier du projet.
OriginalL'auteur fvgs | 2013-06-09
Vous devez vous connecter pour publier un commentaire.
new File("images/grass.png")
recherche un répertoire d'images sur le système de fichiers, dans le répertoire courant, qui est le répertoire à partir duquel l'application est démarrée. Alors que c'est faux.ImageIO.read()
renvoie une BufferedImage, et prend une URL ou unInputStream
comme argument. Pour obtenir une URL deInputStream
depuis le classpath, vous utilisezClass.getResource()
ouClass.getResourceAsStream()
. Et le chemin commence par un /, et commence à la racine du classpath.Ainsi, le code suivant devrait fonctionner si l'herbe.fichier png est sous le package
images
dans le classpath:Cela fonctionne dans l'IDE est que le fichier est dans le runtime classpath. Et il sera si le IDE "compile" à sa cible répertoire classes. Pour ce faire, le fichier doit être dans le répertoire des sources, ainsi que vos fichiers source Java.
Oui. Vous devez le faire. Si vous ne le faites pas, eclipse ne sont pas copier le dossier images dans le répertoire cible, et les images ne sera donc pas partie de l'exécution du classpath.
En effet, nous y voilà. Qu'il fonctionne correctement maintenant. Merci pour l'aide.
Réponse parfaite.
OriginalL'auteur JB Nizet