Die Befehle wsimport und xjc (beide heruntergeladen als Teil von Java JDK) ignorieren die mitgelieferte jaxb-Bindungsdatei, wenn die anvisierten wsdl / xsds unter bestimmten Pfaden stehen.
Um dieses Verhalten zu reproduzieren, kann der Pfad C: \ a verwendet werden. Dieses Verzeichnis enthält die folgenden XSD-Dateien:
nm.xsd:
%Vor%name.xsd:
%Vor%bindings.xjb:
%Vor%Der folgende Befehl wird von C: \ verwendet, um die JAXB-Artefakte zu generieren:
%Vor%Die Bindung wird ignoriert. Die generierten Klassen verwenden weiterhin xs: date anstelle von java.util.Date und die Adapterklasse wird nicht generiert. Das Problem ist auch reproduzierbar, wenn wsimport mit einer WSDL verwendet wird, die das XSD importiert.
Beim Umbenennen von a in d funktioniert die Bindung wie erwartet. Einige Pfade funktionieren und einige andere nicht. Dies scheint zufällig zu sein, kein Muster wurde identifiziert. Das Verhalten ist für einen bestimmten Pfad konsistent. Dies wurde auf Windows 10, Windows 7 und Unix-Maschinen reproduziert. Die verwendete Java-Version war 1.7.0_79. Der Name der Bindungsdateien scheint keinen Effekt zu haben, aber der Name der XSD-Dateien.
Was könnte dieses Problem verursachen und wie kann dies behoben werden? Warum beeinflusst der Pfad die Bindung? Gibt es Problemumgehungen, die dieses Problem vermeiden können, während sichergestellt wird, dass die Bindung nicht ignoriert wird, selbst wenn sich der Pfad ändert?