# Castor unmarshal von XML Dokument - ClassCastException aufgrund vom falschen ClassLoader?



## redbomber (6. Jan 2015)

Hallo zusammen,
also ich weiß nicht genau ob der Titel von diesem Thema wirklich die Ursache von meinem Problem ist, aber das ist das einzigste was ich herausgefunden habe.

Ich möchte eine XML-Datei unmarshallen. Dazu verwende ich die library org.exolab.castor.
D.h. ich habe eine Java-Klasse mit den definierten Felder. Ein XML-Dokument, in dem ich die Werte für die Felder definiere und noch eine Mapping-Datei, welche castor sagt, welche Werte auf welche Felder gemappt werden.

Jetzt kann ich das ganze von Eclipse aus problemlos ausführen. Alle Felder werden gesetzt.
Wenn ich aber ein Jar-File aus meinem Tool erzeuge (in eclipse > Export > Runnable Jar File) und dieses Jar-File dann ausführe gibt es immer eine ClassCastException:

*java.lang.ClassCastException: module.Configuration cannot be cast to module.Configuration*

Diese Fehlermeldung sieht schonmal seltsam aus, da es sich ja um dieselbe Klasse handelt.

Wenn ich mir dann von der Klasse module.Configuration, sowie von dem Object, welches mir Castor zurück liefert den Classloader logge, dann sehe ich folgendes. Hier der Code wo ich den Namen der ClassLoader logge:


```
logger.info(lObject.getClass().getClassLoader().toString() + " | " + Configuration.class.getClassLoader().toString());
```

In Eclipse (wo alles gut geht) sind die Classloader identisch:
*sun.misc.Launcher$AppClassLoader@fabe9 | sun.misc.Launcher$AppClassLoader@fabe9*

Nun aber im Log vom ausgeführtem Jar-File (wo es nicht geht):
*sun.misc.Launcher$AppClassLoader@41556f4c | java.net.URLClassLoader@62a23d38*

Jetzt komme ich nicht mehr weiter. Ich kann euch jetzt garnicht mehr erklären, da ich es ab hier nicht mehr verstehe...

Wisst ihr hier vielleicht weiter?
Vielen Dank!


----------



## dzim (8. Jan 2015)

Wäre zwar nur ein Workaround, aber du kannst den Classloader ja auch explizit setzen... Vielleicht bringt dich das weiter. Ich selbst wüsste aus dem Stehgreif da auch sonst nicht direkt weiter (selbst noch nicht erlebt).


----------

