2014-09-19 2 views
1

J'utilise Ant, maintenant j'ai besoin de générer des classes qui devraient implémenter l'interface java.io.Serializable. J'utilise un fichier de liaison pour générer des classes sérialisables, et j'utilise un dtd pour définir les classes. Mais, xjc renvoie l'erreur [xjc] [ERROR] cvc-elt.1: Impossible de trouver la déclaration de l'élément 'jxb: bindings'. Je passe le fichier de liaison comme argument pour xjc tâche:JaxB ne peut pas sérialiser

 <arg value="-b"/> 
     <arg file="../WebContent/DTD/bindings.xjb"/> 

Voici mon fichier de liaison

<jxb:bindings 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jxb:extensionBindingPrefixes="xjc" 
    version="2.0"> 


    <jxb:globalBindings> 
     <xjc:serializable/> 
    </jxb:globalBindings> 

</jxb:bindings> 

Veuillez suggérer la sortie

Répondre

1

Votre problème est que vous utilisez un DTD. DTD vient des temps préhistoriques et le fichier de liaisons avait un different format à l'époque.

Essayez quelque chose comme:

<xml-java-binding-schema xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"> 
    <xjc:serializable/> 
</xml-java-binding-schema> 

Voici un DTD example from the RI.

Bonne chance. Et passez à XSD. :)

+0

merci pour la réponse rapide, j'ai essayé cela, maintenant l'erreur est partie, mais les classes ne sont pas mis en œuvre l'interface Serializable. :( –

+0

Essayez cet exemple entier - ça marche? Https://github.com/gf-metro/jaxb/tree/3461152ffe39baf32b8550d47d18d58cdbc139c5/jaxb-ri/samples/src/main/samples/dtd – lexicore

+0

Si cela ne fonctionne pas, une autre option est d'utiliser mon plugin d'héritage: http://confluence.highsource.org/display/J2B/Inheritance+plugin Cependant je ne l'ai jamais essayé avec des DTD – lexicore

Questions connexes