Проблема, с которой вы сталкиваетесь, когда вы пытаетесь открыть файл с относительным путем, он выглядит относительно того места, где вы запускаете программу. Вместо того, чтобы надеяться получить правильный путь, вы можете использовать Ресурс.
BufferedImage img = ImageIO.read(
YourClassName.class.getResource(
"/mainclass/icons/my-image.png"
)
);
Я думаю, что вам, возможно, придется изменить путь, так как я не знаю, какова ваша структура пакета. Я также предполагаю, что eclipse объединит файлы ресурсов, которые находятся в вашей исходной папке.