IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Classe JAXB et héritage : IllegalAnnotationExceptions


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Classe JAXB et héritage : IllegalAnnotationExceptions
    Bonjour,

    j'ai un schéma xsd et j'utilise JAXB pour générer ces classe. Mon problème, c'est que je souhaiterais que toutes mes classes générée héritent d'une classe déjà créé. J'utilise donc un fichier de binding mais cela provoque une erreur à la génération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <bindings schemaLocation="monSchema.xsd" xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1">
        <globalBindings>
            <superClass name="monPackage.MaClasse" />
        </globalBindings>
    </bindings>
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
    com.sun.xml.internal.bind.api.impl.NameConverter est une interface et JAXB ne peut pas gérer les interfaces.
    	this problem is related to the following location:
    		at com.sun.xml.internal.bind.api.impl.NameConverter
    		at public com.sun.xml.internal.bind.api.impl.NameConverter com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIGlobalBinding.nameConverter
    		at com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIGlobalBinding
    ]

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    L'élément superClass ou superInterface n'est pas définie dans le namespace (ici comme défaut) http://java.sun.com/xml/ns/jaxb, elle est plutôt définie dans une extension binding de namespace .../jaxb/xjc (voir ci-desous). Et puis il faut bien noter qui est une extension, donc l'attribut jaxb:extensionBindingPrefixes (voir ci-desous).
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <jaxb:bindings 
        schemaLocation="monSchema.xsd" 
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        jaxb:extensionBindingPrefixes="xjc"
        version="2.1"
    >
        <jaxb:globalBindings>
            <xjc:superClass name="monPackage.MaClasse" />
        </jaxb:globalBindings>
    </jaxb:bindings>

    [édition] Comme vous avez un autre post just avant ou après http://www.developpez.net/forums/d15...r-classe-jaxb/ où vous avez mentionné superInterface, il faut bien entendu détérminer la nature de MaClass si c'est une interface ou une classe et choisir bien entre superClass et superInterface, l'une ou l'autre.

Discussions similaires

  1. Explications classe persistence et héritage
    Par skyangel dans le forum JPA
    Réponses: 7
    Dernier message: 30/05/2008, 14h32
  2. Classes amies et héritage simple
    Par nicolas66 dans le forum C++
    Réponses: 1
    Dernier message: 27/02/2008, 08h27
  3. Comment hériter de deux classes ? (que signifie héritage multiple ?)
    Par adil_vpb dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 23/10/2007, 19h27
  4. Réponses: 17
    Dernier message: 27/08/2007, 18h35
  5. Foncteur, classes templates et héritage
    Par Floréal dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2007, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo