baginski
I'm new here

Eigene Javaclient-Eingabekomponente - Integration von Icons

Hi,

Ich habe ein Problem mit einem Modul mit eigener Eingabekomponente, genauer mit dem Laden von eingebetteten Icons.

In der Version 4.1 arbeitete es noch korrekt, unter 4.2 leider nicht mehr (die Grafiken werden offenbar nicht mehr gefunden) - ich vermute

ein ClassLoader-Problem ?

Wir haben die Grafiken in der FSM-Datei in einem eigenen Folder (ico) abgelegt und ihn als Resource in der module.xml eingelegt.

Auf das Icon wird dann per

InputStream is = ModuleResources.class.getResourceAsStream("/ico/maximize.png");

zugegriffen; in 4.1 kommt noch etwas sinnvolles zurück, in 4.2 (genauer 4.2.432) leider nur null..

Jemand eine Idee, was ich stattdessen machen muß, um mein Inputstream zu bekommen

Danke für eine Info & Grüße,

Michael Baginski

0 Kudos
3 Replies
s_ellers
Crownpeak employee

Hi,

der Modul-ClassLoader beinhaltet von den Resourcen nur die dort angegebenen Jars, nicht jedoch die anderen Resourcen. Die einfachste Möglichkeit die Icons im ClassLoader verfügbar zu machen wäre diese in das Jar der Editor-Klasse zu integrieren.

Grüße,

Stephan

0 Kudos

Klingt plausibel - ich teste das mal aus Smiley Happy


Danke & Gruß,

Michael

0 Kudos

Hi nochmal,

eventuell scheint es hier tatsächlich noch ein Problem mit dem ClassLoader zu geben.

In einigen unserer Beispiel wird genau das Pattern wie in diesem Fall verwendet. Resource-Definition mit separaten Dateien, sowie das Laden über den lokalen ClassLoader.

Nach einem kurzen Blick in den Code werden wohl alle nicht-Jar Resourcen zu einem Resource-Jar zusammengepackt und im Anschluss ebenfalls dem Modul-ClassLoader hinzugefügt, so die Theorie.

Wie sieht denn die Konfiguration in diesem Fall aus?

<module>

    <!-- ... -->

    <components>

        <public>

            <name>Editor</name>

            <class>de.espirit.firstspirit.module.GadgetSpecification</class>
            <configuration>
                <gom><!-- GomClass --></gom>
                <factory><!-- SwingGadget Factory --></factory>
                <value><!-- ValueEngineerFactory --></value>
                <scope unrestricted="yes" />
            </configuration>
            <resources>
                <resource>ico/</resource>
                <resource>lib/editor.jar</resource>
            </resources>
        </public>

    </components>

</module>

Grüße,

Stephan

0 Kudos