Cargar imagen desde jarra y fuera de ella en eclipse

Tengo una estructura como esta en mi proyecto java en eclipse:

src / com / myprogram /.../ foo.javares / icon.png.proyecto...

Sé que puedes cargar una imagen desde dentro de un frasco con

ImageIO.read(getClass().getResource("/res/icon.png"));

El problema surge cuando intenta ejecutar la aplicación con eclipse directamente ya que (supongo) la carpeta res no está dentro de la carpeta src, se obtiene unnull URL. Y quiero tener carpetas separadas para el código fuente y para los recursos.

Además, lo que he encontrado es que puedo agregarres carpeta a class-path en eclipse para que pueda cargarla con:

URL url = getClass().getResource("/res/icon.png");
if (url == null)
    url = getClass().getResource("/icon.png");
ImageIO.read(url);

Pero este código adicional solo es necesario cuando se desarrolla, y no me gusta hacer cosas como esta (el código debería ser lo más limpio y definitivo posible).

¿Se puede hacer algo para que el icono se lea con ambos métodos con el mismo código?

Respuestas a la pregunta(2)

Su respuesta a la pregunta