如何使用maven jaxb生成类实现serializable

时间:2017-03-08 18:10:51

标签: java xsd jaxb

我希望我的所有xjc生成的类都实现了可序列化的接口。 在post阅读解决方案后,我实现了它,但obj[myFunction("guest_user")].find(... 抛出错误:

  

[ERROR] file:mapping.xsd [17,34] org.xml.sax.SAXParseException;   systemId:file:mapping.xsd; lineNumber:17; columnNumber:34;   src-annotation:元素只能包含和    元素,但' globalBindings'被找到。在   com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)     在   com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)     在

我的xsd示例:

jaxb2-maven-plugin

Maven插件:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           jaxb:extensionBindingPrefixes="xjc"
           attributeFormDefault="unqualified"
           elementFormDefault="qualified">
    <xs:element name="MappingFile" type="MappingFileType">
        <xs:annotation>
            <jaxb:globalBindings>
                <xjc:serializable uid="43538530765l"/>
            </jaxb:globalBindings>
        </xs:annotation>

我是否需要使用任何依赖来避免此异常?请消化。

1 个答案:

答案 0 :(得分:1)

您的绑定文件应如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
        version="2.1">

    <jaxb:globalBindings>
        <xjc:serializable uid="1" />
    </jaxb:globalBindings>
</jaxb:bindings>

此外,触摸特定目录中的绑定文件,并在maven插件特定配置中引用它。 例如:

<configuration>
    <sources>
      <source>src/main/xjb/xsd</source>
    </sources>
  <packageName>xx.yy.zz.jaxp</packageName>
    <xjbSources>
        <xjbSource>src/main/xjb/jaxb-bindings.xjb</xjbSource>
    </xjbSources>
</configuration>
相关问题