este es mi archivo XML:No puedo entender por qué este JAXB IllegalAnnotationException se lanza
<fields>
<field mappedField="Num">
</field>
<field mappedField="Type">
</field>
</fields>
Hice 2 clases para analizarlo (Fields.java y Field.java):
@XmlRootElement(name = "fields")
public class Fields {
@XmlElement(name = "field")
List<Field> fields = new ArrayList<Field>();
//getter, setter
}
y
public class Field {
@XmlAttribute(name = "mappedField")
String mappedField;
/getter,setter
}
Pero obtengo esta excepción.
[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]
No puedo entender por qué esta excepción aumenta. La excepción está aquí:
JAXBContext context = JAXBContext.newInstance(Fields.class);
Uso JDK 1.6_0.0.7. Gracias.
¿Podría intentar y reemplazar su nombre de atributo? Podría ser que la palabra clave 'campo' en realidad está reservada. – npinti
@MyTitle su código funcionará bien si solo elimina los métodos setter en ambas clases ya que su xml se está ocupando de establecer valores para los atributos. Si dice que necesita los métodos getter y setter en sus clases, agregue la línea "@XmlAccessorType (XmlAccessType.FIELD)" sobre su nombre de clase y después de la anotación "@XmlRootElement" y funciona bien. – mannedear