我有3周的XSD連接在一起:MOXY-多的XSD導入定義 - 錯誤相同的模式:「元件」已定義
schema1.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
includes schema2.xsd
schema2.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
includes schema3.xsd
schema3.xsd
imports namespace="x:y:z" schemaLocation= "schemaDefinitions.xsd"
這些的XSD是由外部源提供,並且不能被改變。
以前我的項目使用標準的JAXB和編譯時創建的類。目前我切換到動態JAXB MOXY(運行),現在收到我的DynamicJAXBContextFactory.createContextFromXSD()線,採用schema1.xsd爲的FileInputStream以下錯誤:
Exception in thread "main" java.lang.ExceptionInInitializerError at
TestTool.JavaRoot.TestTools.MainTool.main(MainTool.java:55)
Caused by: Exception [EclipseLink-50040] (Eclipse Persistence Services -
2.6.2.v20151217-774c696):
org.eclipse.persistence.exceptions.JAXBException
Exception Description: Error creating DynamicJAXBContext.
Internal Exception: org.xml.sax.SAXParseException; systemId:
file:///public/SITE1/config/schema/SchemaDefinitions.xsd; lineNumber:
xyz; columnNumber: xyz; 'xyz' is already defined
我已經決定的原因是,所有三個模式都導入schemaDefinitions.xsd。如果我從schema2和schema3中刪除導入語句,則會解決該錯誤。這個錯誤並沒有出現在以前的jaxb實現中,並且自從切換到MOXY後xsds沒有改變。
問題:
是否合法/有效的XSD文件導入/包括這樣
什麼是可能的變通,因爲我不能修改的XSD?也許修改綁定xjb文件?
很高興你能解決你的問題。如果您決定仍然允許進行驗證的解決方案,請更新您的答案。謝謝。 – kjhughes