Questions & Answers

graulich
I'm new here

POI in FirstSpirit und der gute alte ClassLoader

Hallo zusammen,

FirstSpirit wird mit einer relativ alten Version von Apache POI ausgeliefert. Wir benรถtigen (da in der aktuellen POI Version sehr viele Bugs behoben wurden) in einem unserer Module jedoch die aktuelle Version von Apache POI (Excel-Sheets auslesen und erstellen).

รœber einen URLClassLoader kommen wir natรผrlich an die aktuellen POI-Klassen heran. Da wir dann jedoch nicht mehr mit typisierten Objekten (was POI Objekte betrifft) arbeiten kรถnnen, ist dies kein gangbarer Weg (wir mรผssten via "Java-Reflection" alle POI-Methoden aufrufen).

Habt ihr eine Lรถsung, wie wir den Class-Loader davon รผberzeugen kรถnnen, die aktuellen POI JARs "vor" den FirstSpirit POI Klassen zu "ziehen"?

Wenn mรถglich ohne im Java-Quelltext darauf achten zu mรผssen, welche Version man gerade zieht, sondern an einer Modul-Zentralen-Konfigurations-Stelle Smiley Wink

Beste GrรผรŸe

Dominic

0 Kudos
3 Replies
andre
I'm new here

> Habt ihr eine Lรถsung, wie wir den Class-Loader davon รผberzeugen kรถnnen, die aktuellen POI JARs "vor" den > FirstSpirit POI Klassen zu "ziehen"?

nein, leider nicht.

Einzige mรถglichkeit ist die poi-soruces zu refactoren (neues/anderes package). ja ich weiss nicht schoen, ok ok , stimmt wirklich dreckig aber anderes gehts es momentan nicht.

Danke fรผr die schnelle Antwort! Smiley Happy

Schade, dass es nicht geht. Da lรคsst sich anscheinend nichts machen. Habe jetzt diverse Ansรคtze versucht, der einzige der funktioniert (aber aufgrund fehlender Typisierung nicht praktikabel ist) ist der Weg รผber den URLClassLoader und Java-Reflection.

In Spring gibt es bspw. die Mรถglichkeit einen ClassLoader zu konfigurieren und den bestehenen sozusagen zu รผberschreiben. Gibt es solche Szenarien nicht in FirstSpirit?

Die HttpServletRequest und HttpServletResponse Klassen betrifft dieses Problem ebenfalls. Auch davon gibt es eine "abgespeckte" Version in einer FirstSpirit-JAR.

0 Kudos

jedes Modul hat einen eigenen Classloader somit sind Module von einander voellig isoliert...allerdings auch einen Parent-Classloader und genau der ist aktuell noch das "Problem". wie gesagt poi-source downloaden, package refactoren und dann wieder ein jar bauen und ins modul einbinden ist leider die einzige mรถglichkeit

0 Kudos

Type a product name