我有以下情況:JAXB xsd:包含並單獨包
有2個xsd文件。第一個定義了一個根元素和幾種類型。
第二個包含第一個,並擴展其中的一個類型。 在這個文件中沒有定義根類型。
從第一個xsd開始,在包(a)中生成一個模型。 第二個模式應爲其他 類型創建新包(b),但重用生成的包a。我通過使用指向先前生成的元素的 綁定文件(在 軟件包a中)解決了這個問題。 到目前爲止,這工作,但..
JAXB在包A中生成一個ObjectFactory,其中包含一個創建 方法的根元素。 對於第二個模式,還在包B中創建了一個ObjectFactory。 而且此類也具有相同根元素的create方法。
爲了能夠使用所有類型,使用 多個對象工廠(newInstance(a.ObjectFactory.class, b.ObjectFactory.class)
)創建jaxb上下文。
在運行時,這會導致以下錯誤:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions The element name {http://www.example.org/Scenario/}scenario has more than one mapping
我應該產生不同的包?或者有什麼 可能使用綁定文件來防止對象工廠從 有重複的方法?
感謝您的回覆。我已經改變它使用導入,而不是包含,確實似乎更好。我會看看博客文章,看起來很有希望。 – Alexander 2010-11-25 13:49:34