Je ne comprends pas pourquoi ce JAXB IllegalAnnotationException est levée

C'est mon fichier XML:

<fields>
    <field mappedField="Num">
    </field>

    <field mappedField="Type">      
    </field>    
</fields>

J'ai fait les 2 classes pour l'analyser (Fields.java et Field.java):

@XmlRootElement(name = "fields")
public class Fields {

    @XmlElement(name = "field")
    List<Field> fields = new ArrayList<Field>();
        //getter, setter
}

et

public class Field {

    @XmlAttribute(name = "mappedField")
    String mappedField;
    /getter,setter
}

Mais je bénéficier de cette exception.

[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]

Je ne comprends pas pourquoi cette exception s'élève. Exception est ici:

JAXBContext context = JAXBContext.newInstance(Fields.class);

Je utiliser le JDK 1.6_0.0.7. Merci.

  • Pourriez-vous essayer de remplacer votre nom d'attribut? Il se pourrait que la field mot-clé est en fait réservé.
  • votre code fonctionne très bien si vous venez de supprimer le setter à la fois dans les classes xml est en prenant soin de fixer des valeurs pour les attributs. Si vous dites que vous avez besoin de la lecture & setter dans votre cours, puis ajoutez la ligne "@XmlAccessorType(XmlAccessType.CHAMP)" au-dessus de votre nom de la classe et après le "@XmlRootElement" annotation et il fonctionne très bien.
InformationsquelleAutor MyTitle | 2012-05-29