JAXB XJC:如何生成java类

问题描述 投票:0回答:1

我正在尝试使用

xjc
工具来根据某些模式生成Java代码。

我正在执行此命令:

xjc -d generated -p net.mycom.tech .

第一个问题是,

  1. -b bindings.xjb
    是什么意思?应该有哪些内容?是强制性的吗?
  2. 我收到这两种错误消息:

    a.

    [ERROR] Two declarations cause a collision in the ObjectFactory
    class.

    b.

    A class/interface with the same name "net.mycom.tech.DatosGenericos" is already in use. Use a class customization to resolve this conflict.

我的文件夹包含几个xsd:

enter image description here

请帮忙吗?

java jaxb xjc
1个回答
0
投票

对于 XJC 编译器,-b 用于外部 JAXB 绑定,它会覆盖默认规则。作为示例,请在下面找到一个小片段。该文件的名称是 mybind.xjb.

<jaxb:bindings version="2.0" 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"
    jaxb:extensionBindingPrefixes="xjc">

    <jaxb:globalBindings>
        <xjc:simple />
        <xjc:serializable uid="-1" />
        <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
            parse="javax.xml.bind.DatatypeConverter.parseDateTime"
            print="javax.xml.bind.DatatypeConverter.printDateTime" />
    </jaxb:globalBindings>
</jaxb:bindings>

在这种情况下,上面的mybind.xjb将 dateTime 类型覆盖为 java.util.Calendar 类型

更多详细信息,您可以参考下面的oracle文档链接。 https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html

就错误而言,我建议将类生成到一个空的新目录中。你必须使用以下命令

xjc -d src -p com.projectname.place.functionality xmlSchema.xsd

在上述情况下,请确保目录 src 不包含任何 java 文件。

© www.soinside.com 2019 - 2024. All rights reserved.