2014-09-19 67 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