Löse JAXB "Namenskollision in der Klasse ObjectFactory" mit Anpassung

8

Das Ausführen eines "xjc" -Befehls auf diesen xsd-Dateien gibt Two declarations cause a collision in the ObjectFactory class zurück, da zwei Elemente vorhanden sind benannte "Skala" und "Skala".

Laut dieser Seite kann dieses Problem durch Anpassen der xsd-Dateien mit <factoryMethod> behoben werden. .

Weißt du wie das geht? Haben Sie ein Beispiel dafür, wie Sie die Datei binden können?

    
julien 15.09.2011, 21:55
quelle

4 Antworten

10

Sie können das Bindings-Tag verwenden. Setzen Sie das schemaLocation-Attribut auf den Speicherort eines bestimmten xsd. Die untergeordneten Tags, schemaBindings und das Paket definieren dann einen neuen Paketnamespace für dieses xsd. Unten ist die Bindungsdatei, die ich vor einiger Zeit mit xjc benutzt habe. Wenn es noch funktioniert, großartig. Wenn nicht, Beispiel =).

%Vor%     
Teddy Yueh 15.09.2011, 22:15
quelle
5

Haben Sie versucht -B-XautoNameResolution? Es kann nicht immer der Trick, aber am besten versuchen, bevor Sie eine verbindliche Datei schreiben.

    
Murat 15.09.2011 22:16
quelle
3

Eine Lösung für Ihr Problem ist die Verwendung der Option -p, um separate Paketnamen für jede xsd-Datei anzugeben.

    
sweetfa 15.09.2011 22:13
quelle
0

Nun, nach einem langen Versuch hat die folgende Konfiguration für mich funktioniert. Ich benutze jaxb2-maven-plugin 2.3.1 und eine separate Bindedatei:

pom.xml

%Vor%

bindings.xml

%Vor%

%Vor%

Bitte beachten Sie, dass wir packageName in pom.xml nicht angeben müssen, stattdessen können wir sie mit <jxb:schemaBindings> innerhalb der Datei bindings.xjb deklarieren, was viel einfacher ist, wie erwähnt hier .

    
agpt 30.01.2018 07:03
quelle

Tags und Links