這是我的XML文件:我不明白爲什麼這個JAXB IllegalAnnotationException拋出
<fields>
<field mappedField="Num">
</field>
<field mappedField="Type">
</field>
</fields>
我做了2類分析它(Fields.java和Field.java):
@XmlRootElement(name = "fields")
public class Fields {
@XmlElement(name = "field")
List<Field> fields = new ArrayList<Field>();
//getter, setter
}
和
public class Field {
@XmlAttribute(name = "mappedField")
String mappedField;
/getter,setter
}
但我得到這個例外。
[INFO] com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
[INFO] at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66) ~[na:1.6.0_07]
[INFO] at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422) ~[na:1.6.0_07]
[INFO] at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:270) ~[na:1.6.0_07]
我不明白爲什麼這個例外會上升。例外是:
JAXBContext context = JAXBContext.newInstance(Fields.class);
我使用JDK 1.6_0.0.7。謝謝。
你能否嘗試並替換你的屬性名稱?這可能是'field'關鍵字實際上是保留的。 – npinti
@MyTitle你的代碼將正常工作,如果你只是在你的類中移除了setter方法,因爲你的xml正在設置值的屬性。如果你說你需要類中的getter&setter方法,那麼在你的類名上面加上「@XmlAccessorType(XmlAccessType.FIELD)」,在「@XmlRootElement」註釋後面加上,它工作正常。 – mannedear