Hi zusammen! Ich habe da ein Problem, welches ich mir absolut nicht erklären kann.
Ich arbeite an einem Converter, welcher xml Nachrichten in ein für die verwendete Event Processing Engine (Sybase Aleri) lesbares Format umbaut. Die Methode ist simpel. Über xjc habe ich die Klassen ausgehend von einem xsd Schema gebaut.
Lese ich nun xml Nachrichten in meiner eclipse umgebung ein funktioniert das ganze wunderbar. Baue ich mir jedoch ein jar, lege es wie in der Dokumentation von Aleri beschrieben in den Classpath und benutze den Converter bekomme ich folgende Exception:
der Aufruf findet wie folgt statt, wobei Event die zu Deserialisierende Klasse ist:
Ich habe mir die JAXB Quellen mal angeschaut und gesehen, dass ich das Problem umgehen könnte, wenn ich den in der ContextFinder.find() Methode ermittelten JAXBContext über die jaxb.properties definiere oder aber über eine 'system property' übergebe.
Warum tritt die NPE auf? Kann mir jemand sagen, wie genau ich das Problem umgehen kann?
system property wird dabei wie folgt ermittelt, sagt mir allerdings nicht viel:
Der für die NullPointerException verantwortliche Codeblock sieht wie folgt aus:
Ich hoffe mal, dass ich alle notwendigen Informationen drin hab. Bin für jede Hilfe dankbar! Bisher war meine Suche vergebens.
Grüße, Jimbo
Ich arbeite an einem Converter, welcher xml Nachrichten in ein für die verwendete Event Processing Engine (Sybase Aleri) lesbares Format umbaut. Die Methode ist simpel. Über xjc habe ich die Klassen ausgehend von einem xsd Schema gebaut.
Lese ich nun xml Nachrichten in meiner eclipse umgebung ein funktioniert das ganze wunderbar. Baue ich mir jedoch ein jar, lege es wie in der Dokumentation von Aleri beschrieben in den Classpath und benutze den Converter bekomme ich folgende Exception:
Java:
java.lang.NullPointerException
at javax.xml.bind.ContextFinder.find(ContextFinder.java:269)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:412)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:375)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:279)
at slipstream.converters.BpafToAleriConverter.parse(Unknown Source)
at slipstream.converters.BpafToAleriConverter.externalToAleri(Unknown Source)
at com.aleri.connectors.JmsConnector.customMessageToStringArray(JmsConnector.java:584)
at com.aleri.connectors.JmsConnector.receiveCustomMessage(JmsConnector.java:547)
der Aufruf findet wie folgt statt, wobei Event die zu Deserialisierende Klasse ist:
Java:
...
String packageName = Event.class.getPackage().getName();
//HIER KNALLTS
JAXBContext jc = JAXBContext.newInstance(packageName);
Unmarshaller u = jc.createUnmarshaller();
...
Ich habe mir die JAXB Quellen mal angeschaut und gesehen, dass ich das Problem umgehen könnte, wenn ich den in der ContextFinder.find() Methode ermittelten JAXBContext über die jaxb.properties definiere oder aber über eine 'system property' übergebe.
Warum tritt die NPE auf? Kann mir jemand sagen, wie genau ich das Problem umgehen kann?
system property wird dabei wie folgt ermittelt, sagt mir allerdings nicht viel:
Java:
// search for a system property second (javax.xml.bind.JAXBContext)
factoryClassName = AccessController.doPrivileged(new GetPropertyAction(jaxbContextFQCN));
if( factoryClassName != null ) {
return newInstance( contextPath, factoryClassName, classLoader, properties );
}
Der für die NullPointerException verantwortliche Codeblock sieht wie folgt aus:
Java:
// search META-INF services next
BufferedReader r;
try {
final StringBuilder resource = new StringBuilder().append("META-INF/services/").append(jaxbContextFQCN);
final InputStream resourceStream =
classLoader.getResourceAsStream(resource.toString()); // HIER TRITT DIE NPE AUF
if (resourceStream != null) {
...
Ich hoffe mal, dass ich alle notwendigen Informationen drin hab. Bin für jede Hilfe dankbar! Bisher war meine Suche vergebens.
Grüße, Jimbo