Java en Eclipse: ¿Dónde pongo archivos en el sistema de archivos que quiero cargar usando getResource? (por ejemplo, imágenes para un ImageIcon)

Sé que el archivo debe estar donde getClass (). GetResource (filename) puede encontrarlo, pero no sé dónde está.

Me interesa saber dónde colocar los archivos en el propio sistema de archivos y cómo utilizar la funcionalidad de Eclipse para configurar los recursos.

Para Eclipse, normalmente todo lo que necesita hacer es configurar una carpeta en algún lugar dentro del directorio de su código fuente. Por ejemplo, si el directorio que contiene tu fuente es /src entonces puedes crear una carpeta /src/resources para colocar tus imágenes / archivos. Luego, dentro de tu clase, haces un getResource("/resources/image.png") para recuperarlo.

También puede colocar la imagen / archivo dentro de la misma carpeta / paquete que la clase que intenta acceder si lo desea (ejemplo: coloque la imagen.png en el paquete com.mycompany con la clase com.mycompany.Foo que necesita acceder y llame a getResource("image.png") ), pero he descubierto que es más fácil mantener recursos como imágenes y otros archivos en su propio directorio especial fuera de las carpetas de clase; son más fáciles de administrar de esa manera.

En Eclipse, cada vez que realice una comstackción, los archivos dentro de este directorio de recursos se copiarán en su directorio de comstackción junto con las clases comstackdas.

Es importante tener en cuenta que si tiene activado “Build Automatically” en Eclipse (como la mayoría de la gente lo hace) cualquier recurso en este directorio que se modifique fuera de Eclipse (es decir, edite una imagen usando una herramienta de edición de imágenes) siempre detectar este cambio. Por lo general, hacer una actualización en la carpeta del proyecto asegurará que el archivo se actualice en la comstackción en estas situaciones.

Puede colocarlos en la carpeta src junto a sus clases, o puede crear una nueva carpeta de origen para este fin (normalmente llamados recursos ), aunque los encontrará de forma idéntica desde el código.

Luego los obtiene utilizando getResource("/com/x/y/foo.png") .