JAXB NullPointerException im ContextFinder

Jimbo84

Mitglied
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:

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
 

Noctarius

Top Contributor
Vermutlich (jetzt geraten) ist das Problem, dass getName nicht den Canonical Path sondern einfach nur den Namen des Packages ausgibt.
 

CHE123

Mitglied
hi,

versuch

Java:
  ...
  String packageName = Event.class.getPackage().getName();
  packageName = packageName.replace('.', '/');
  ...

g,
Christian
 

Jimbo84

Mitglied
@Noctarius Wie genau hab ich das zu verstehen? Bzw. wie würde denn der kanonische Pfad aussehen? Ich find nur was über Dateisystempfade für I/O :(

@CHE123 Hat leider nicht funktioniert, Fehler bleibt gleich. Danke trotzdem für den Tipp!
 

Noctarius

Top Contributor
Canonical Path ist der komplette Pfad.

Beispiel einer Klasse:
Klasse getName() => Foo
Klasse getCanonicalName() => com.example.my.classes.Foo

Soweit ich mich erinnere wird JAXB den Canonical Path brauchen, ich denke aber, dass Package.getName() nur den eigenen Packagenamen wiedergibt, aber nicht den kompletten Package Path.
Weißt du denn eine Klasse des Context-Pfades aus der du dir den Canonical Path holen kannst?
 

Jimbo84

Mitglied
Das ist es leider auch nicht. Habs so verändert:
Java:
                        String packageName = Event.class.getPackage().getName();
			writeLine(packageName);
			JAXBContext jc;
			//try to get the Context with dots
			try {
				writeLine("First try: "+packageName);
				jc = JAXBContext.newInstance(packageName);
			} catch (NullPointerException ex){
				//looks like this didnt work, so lets try to retrieve it with slashes
			}
			packageName = packageName.replace('.', '/');
			writeLine("Second try: "+packageName);
			jc = JAXBContext.newInstance(packageName);


und bekomme in mein Log folgendes geschrieben, gefolgt von der genannten NPE in der letzten Codezeile:
Sun May 23 13:31:38 UTC 2010 - slipstream.xml.domain
Sun May 23 13:31:38 UTC 2010 - First try: slipstream.xml.domain
Sun May 23 13:31:38 UTC 2010 - Second try: slipstream/xml/domain
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
Rakshan Unmarshalling multiple namespaces with jaxb XML & JSON 0
B JAXB und HTML XML & JSON 1
E JAXB und java.nio.file.Path XML & JSON 4
W jaxb-api XML Feld nicht gesendet setzt das Defaultvalue nicht XML & JSON 3
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
S JAXB mit mehreren zusammenhängenden .xsd-Files XML & JSON 0
N JAXB: Überflüssiges Wrapper-Tag für Map-Einträge XML & JSON 0
D JAXB mit Map und Color XML & JSON 2
K JAXB-XML unvollständig XML & JSON 1
K JAXB Unmarshelling XML & JSON 1
E JAXB und abstrakte Klasse(n) XML & JSON 0
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
B JAXB - Marshal ArrayList XML & JSON 2
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
B JAXB-Fehler bei REST-Api XML & JSON 0
M JAXB HashMap Dynamisches Laden XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
P JAXB-Problem XML & JSON 1
A JAXB: XMLMixed generieren XML & JSON 0
R [JAXB] XmlRootElement und XmlType gemeinsam nutzen XML & JSON 0
I XML to Object - Mapping mit JAXB 1.0 XML & JSON 1
L JAXB - Generischen Wert mit Liste belegen XML & JSON 1
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
K JAXB Annotation @XMLRootElement vererben XML & JSON 0
F JAXB Unmarshal - Kein "default Constructor" XML & JSON 2
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
B JAXB - manuell Klassen aus xsd XML & JSON 3
S Jaxb Unmarshalling Problem XML & JSON 4
S JAXB - Any Elementliste - wie Werte verändern? XML & JSON 4
R JAXB: A cycle is detected in the object graph. This will cause infinitely deep XML XML & JSON 6
M JAXB versucht abstrakte Klasse zu erzeugen XML & JSON 7
M JAXB: automatisches Groß schreiben Property XML & JSON 9
C Projekt - JAXB, EMF oder doch DOM? XML & JSON 4
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
J JAXB: Mehrmals abspeichern XML & JSON 3
D XML Einlesen mit JaxB XML & JSON 4
W JAXB Binding customization XML & JSON 4
L JAXB und Interfaces XML & JSON 4
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
eykarhorn JAXB namespace attribut aus rootelement entfernen XML & JSON 2
nrg JAXB - nor any of its super class is known to this context XML & JSON 3
S aus XML mit JAXB zu Baumstruktur XML & JSON 3
nrg JAXB generell auf XMLs übertragbar XML & JSON 22
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
B PropertyChangeListener generieren mit JAXB (xjc) XML & JSON 3
G JAXB und verschachtelte Elemente? XML & JSON 6
G JAXB XML-Attribute feststellen XML & JSON 4
S JAXB 2 und JSR 303 XML & JSON 11
M [JAXB] @XmlAnyElement namespace XML & JSON 4
R JAXB Unmarshal XML & JSON 2
J JAXB und ArrayList XML & JSON 4
Landei Jpa2 -> jaxb??? XML & JSON 9
M JAXB - HashMap XML & JSON 1
dzim JAXB-Unmarshalling ignoriert/löscht Einträge aus XML - oder lässt sie verschwinden XML & JSON 3
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
ruutaiokwu jaxb eclipse plugin... XML & JSON 3
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
R JAXB ausgewählte Felder XML & JSON 10
TiME-SPLiNTER JAXB: com.sun.xml.bind.v2.ContextFactory XML & JSON 3
V JAXB und leere Listen XML & JSON 2
L compareto(), equals() in JAXB generierten Dateien XML & JSON 3
D jaxb validierung/verification vor marshalling XML & JSON 3
J JAXB mit GregorianCalendar XML & JSON 4
HombreDelMundo JAXB can't handle interfaces XML & JSON 4
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
B JAXB Unmarshalling mehrerer Objekte XML & JSON 2
V JAXB schema 2 java XML & JSON 3
B JPA + JAXB Mapping Problem XML & JSON 2
S Navigieren in unbekannten JAXB-Objecten XML & JSON 2
H JAXB und STAX XML & JSON 2
H JAXB Probleme beim Unmarshalling XML & JSON 3
C Serialisierung mit JAXB XML & JSON 6
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
S JAXB und viele verschachtelte Attribute XML & JSON 1
J JAXB - Map XML & JSON 2
O JAXB generierte Klassen sollen Serializable implementieren XML & JSON 1
aze JaxB: Nullelemente in Array nicht anzeigen XML & JSON 3
turmaline JAXB can't handle interfaces XML & JSON 20
sambalmueslie JAXB - Unmarshall ein XML-Document das aus zwei XSD Definitionen besteht XML & JSON 8
S JAXB und abstrakte Klasse(n) XML & JSON 4
P JAXB: Marshalling XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
M JAXB: Wie folgendes Konstrukt abbilden? XML & JSON 20
A Jaxb und Interfaces XML & JSON 12
B JaxB und XSD :-) XML & JSON 8
G JAXB - Marshaller - kein Rückgabewert XML & JSON 2
N XML will nicht weder JAXB noch XStream XML & JSON 8
F Zugriff auf durch JAXB erzeugte Object-Struktur... XML & JSON 6
C Java-Imports bei Jaxb XML & JSON 8
F Marshaling eines JAXB Objektes worin ein anderes JAXB Objekt eingeschlossen ist XML & JSON 6
K JAXB, Vererbung und Codegeneration XML & JSON 2
M XmlRootElement und JAXB XML & JSON 4
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
G jaxb Vector (oder ähnliches) von Elementen generieren XML & JSON 6
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
J JCheckbox abfragen und serialisieren mit JAXB 2.0 XML & JSON 15
F JAXB erste schritte XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben