Referenzierung von Icons eines MPS-Editors

 Technische Problemstellung:

Innerhalb eines MPS-Editors werden Icons verwendet. Die relative Pfadangabe zur benötigten Icon-Datei unterscheidet sich jedoch, je nachdem, ob innerhalb der MPS-Entwicklungsumgebung gearbeitet wird oder die generierte Standalone-Applikation gestartet wird. Als Konsequenz sind die Icons entweder nur im finalen Produkt sichtbar oder nur während der Entwicklung. Beides stellt natürlich keine zufriedenstellende Lösung dar.

Problemlösung:

Um diesen Umstand in den Griff zu bekommen, empfiehlt es sich, die verwendeten Icon-Dateien nicht über das Dateisystem zu referenzieren sondern aus einer Java-Ressource heraus.

Hierzu einfach innerhalb einer passenden Solution entsprechende "Dummy Actions" anlegen, innerhalb welcher die benötigten Icons referenziert werden. Die Buildumgebung sorgt dann dafür, dass die Icons innerhalb der jeweiligen generierten JAR-Dateien zu finden sind.


Diese Icons können dann innerhalb des MPS-Editors problemlos über den jeweiligen Pfad innerhalb der Ressource (JAR-Datei) referenziert werden. Die Pfade der Icons können somit sowohl direkt innerhalb der MPS-Entwicklungsumgebung als auch als Teil einer generierten Standalone-Applikation aufgelöst und verwendet werden:

BufferedImage icon = ImageIO.read(DummyActionClass.class.getResource("/path/within/generated/jar/file/icon.png"))
Java JNI-Exception externer JAR-Dateien