Ich habe bißchen ausprobiert und jetzt läuft wieder.
/Projekt-Ordner/src
/Projekt-Ordner/icons
Kann mir nicht vorstellen, dass man so zum Ziel kommt.
Es sollte - wenn schon - so sein, falls die Icons im fertigen Programm in einem Unterverzeichnis namens Icons liegen sollen.
/Projekt-Ordner/resources/icons
Im Buildscript wird dann der Inhalt des classes-Ordners (den man als Ziel für das Kompilieren gewählt hat) und der Inhalt des resources Ordners in die Jar gepackt. Damit schließt man von Anfang aus, dass der Inhalt des Source-Ordners in der Jar landet.
Vor knapp 25 Jahren hatte ich mal ein Java-Spiel gekauft, in dem in einem Unterordner sämtliche Sourcecodes lagen. Selbst 'Profis' machen da also Fehler

Mein Methode ist natürlich nicht die einzige Möglichkeit, ich hab's mir nur so angewöhnt, Sourcen vom Rest strikt getrennt zu halten. Der Build klappt aber sicher auch mit passenden Dateifiltern.
Was ich mir zum Tesen meines Codes auch angewöhnt hab: Das Spezifitzieren eines Runtime-Verzeichnisses, das verschieden vom Projektordner ist. Damit stelle ich sicher, dass ich keine Dateizugriffe verwende, wo Resourcenzugriffe notwendig wären (Dateien in einer Jar).
Unter Linux und Windows gibt's bei Java übrigens keinen Unterschied. Wenn du da einen siehst, dann machst du was falsch.
Entweder greift man auf eine physikalische Datei zu oder auf eine Resource, das ist in beiden Fällen das Gleiche.
Einen Unterschied gibt es allerdings: Windows kann ./meinPfad/Datei.jpg
und .\meinPfad\Datei.jpg auswerten, während unter Linux nur die erste Version funktioniert. Resourcen werden in beiden Fällen aber gleich benannt, hier kommt nicht das Dateisystem zum Einsatz, sondern Javas Logik zum Auslesen von Zip-Dateien.