mardi 6 janvier 2015
ClassCastException aufgrund vom falschen ClassLoader?
Posted on 12:44 by verona
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:
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!
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:
Code:
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!
ClassCastException aufgrund vom falschen ClassLoader?
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire