2014-02-20 43 views
2

我有一個這樣的XSD:JAXB - IllegalAnnotationExceptions

<xs:element name="Measure"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element minOccurs="1" ref="Measure_Id"/> 
    <xs:choice minOccurs="1" maxOccurs ="4"> 
     <xs:element ref="Measure_Value"/> 
     <xs:element ref="Measure_Value_Max"/> 
     <xs:element ref="Measure_Value_Min"/> 
     <xs:element ref="Measure_Value_Average"/> 
    </xs:choice> 
    <xs:element minOccurs="0" ref="Files"/> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

特別地,具有<xs:choice>我想指定元件Measure必須有至少一種類型的Measure_Value。 不幸的是這種代碼生成一個例外:

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions 1個計數有與元素{} Measure_Value_Max的@XmlElementDecl沒有的ObjectFactory。

我必須做些什麼來解決這個問題呢?

我用Netbeans 7.4jdk1.7

此外,在我的架構的另一部分,這種限制的正常工作!爲什麼?

<xs:element name="UD_Info"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element minOccurs="1" ref="UD_Identificator"/> 
    <xs:choice minOccurs="1" maxOccurs ="3"> 
     <xs:element ref="UD_Measures"/> 
     <xs:element ref="UD_Alarms"/> 
     <xs:element ref="UD_Diagnostics"/> 
    </xs:choice>   
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

堆棧跟蹤:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/francesco/.m2/repository/org/slf4j/slf4j-log4j12/1.7.6/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] 

SLF4J: Found binding in [jar:file:/home/francesco/.m2/repository/ch/qos/logback/logback-classic/1.0.6/logback-classic-1.0.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] 

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 

There's no ObjectFactory with an @XmlElementDecl for the element {}Measure_Value_Max. 
this problem is related to the following location: 
    at protected java.util.List com.fra.jaxb.Measure.measureValueOrMeasureValueMaxOrMeasureValueMin 
    at com.fra.jaxb.Measure 
    at protected java.util.List com.fra.jaxb.UDMeasures.measure 
    at com.fra.jaxb.UDMeasures 
    at protected java.util.List com.fra.jaxb.UDInfo.udMeasuresOrUDAlarmsOrUDDiagnostics 
    at com.fra.jaxb.UDInfo 

at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66) 
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:405) 
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:253) 
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:84) 
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:66) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:248) 
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235) 
at javax.xml.bind.ContextFinder.find(ContextFinder.java:432) 
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637) 
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584) 
at com.fra.mavenparser.unMarsh.doInfr(unMarsh.java:56) 
at com.fra.mavenparser.Parser.main(Parser.java:26) 

回答

1

爲了讓您需要無論是在把它作爲用來引導JAXBContext,或在的包名創建JAXBContext類之一ObjectFactory過程生成模型。

+0

如果我很理解你的答案,我已經生成類和所有完美的作品,未經該元素措施必須至少有一個類型Measure_Value的規範。當我插入指定的類型(你可以在代碼中看到),我回復這個異常。 – Zany

+0

@Zany - 你是如何創建'JAXBContext'?你也可以編輯你的問題,包括更多的堆棧跟蹤? –

+0

我用XCJ結合模式的類(我會插入問題的堆棧跟蹤信息的信息) – Zany