2014-09-19 55 views
1

我正在使用Ant,现在我需要生成应实现java.io.Serializable接口的类。我正在使用绑定文件来生成可序列化的类,并且我正在使用dtd来定义类。但是,xjc抛出错误[xjc] [错误] cvc-elt.1:找不到元素'jxb:bindings'的声明。我传递绑定文件作为参数传递给XJC任务:JaxB无法序列化

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

这里是我的绑定文件

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

请建议出路

回答

1

你的问题是,您使用的是DTD。 DTD来自史前时代,当时的绑定文件有different format

尝试类似:

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

这里有一个DTD example from the RI

祝你好运。 并切换到XSD。 :)

+0

感谢您的及时回复,我试过了,现在错误消失了,但仍然没有实现类的Serializable接口。 :( – 2014-09-19 12:05:48

+0

试试这整个例子 - 它的工作?https://github.com/gf-metro/jaxb/tree/3461152ffe39baf32b8550d47d18d58cdbc139c5/jaxb-ri/samples/src/main/samples/dtd – lexicore 2014-09-19 12:08:07

+0

如果它不起作用,另一个选择是使用我的继承插件:http://confluence.highsource.org/display/J2B/Inheritance+plugin 但是,我从来没有尝试过用DTD。 – lexicore 2014-09-19 12:09:00