在JAXB生成的类上编译错误

时间:2011-03-04 18:35:10

标签: java jaxb

生成以下类后,我收到以下错误。 我需要以不同的方式运行xjc吗?

  

错误(261,30):interface foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType.FaultType已被定义为包含此范围的类或接口

类文件:

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference   Implementation, v1.0.2-b15-fcs 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2011.03.03 at 04:15:50 PST 
//


package foo.bbs.tbi.firstresponse;


/**
 * Java content class for anonymous complex type.
 * <p>The following schema fragment specifies the expected content contained within   this java content object. (defined at file:/D:/tools/trang/trang-  20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 11)
 * <p>
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="Header">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="rule">
 *                     &lt;complexType>
 *                       &lt;complexContent>
 *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema} anyType">
 *                           &lt;sequence>
 *                             &lt;element name="customer"  type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *                             &lt;element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
 *                             &lt;element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
 *                           &lt;/sequence>
 *                         &lt;/restriction>
 *                       &lt;/complexContent>
 *                     &lt;/complexType>
 *                   &lt;/element>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="Body">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;choice>
 *                   &lt;element name="RTVL_RQST_ID"  type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *                   &lt;element name="Fault">
 *                     &lt;complexType>
 *                       &lt;complexContent>
 *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                           &lt;sequence>
 *                             &lt;element name="fault">
 *                               &lt;complexType>
 *                                 &lt;complexContent>
 *                                   &lt;restriction  base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                                     &lt;sequence>
 *                                       &lt;element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *                                       &lt;element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *                                     &lt;/sequence>
 *                                   &lt;/restriction>
 *                                 &lt;/complexContent>
 *                               &lt;/complexType>
 *                             &lt;/element>
 *                           &lt;/sequence>
 *                         &lt;/restriction>
 *                       &lt;/complexContent>
 *                     &lt;/complexType>
 *                   &lt;/element>
 *                 &lt;/choice>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
*/
public interface EnvelopeType {


/**
 * 
 * @return
 *     possible object is
 *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType}
 */
foo.bbs.tbi.firstresponse.EnvelopeType.BodyType getBody();

/**
 * 
 * @param value
 *     allowed object is
 *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType}
 */
void setBody(foo.bbs.tbi.firstresponse.EnvelopeType.BodyType value);

/**
 * 
 * @return
 *     possible object is
 *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType}
 */
foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType getHeader();

/**
 * 
 * @param value
 *     allowed object is
 *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType}
 */
void setHeader(foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType value);


/**
 * Java content class for anonymous complex type.
 * <p>The following schema fragment specifies the expected content contained within  this java content object. (defined at file:/D:/tools/trang/trang- 20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 29)
 * <p>
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;choice>
 *         &lt;element name="RTVL_RQST_ID" type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *         &lt;element name="Fault">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="fault">
 *                     &lt;complexType>
 *                       &lt;complexContent>
 *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                           &lt;sequence>
 *                             &lt;element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *                             &lt;element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *                           &lt;/sequence>
 *                         &lt;/restriction>
 *                       &lt;/complexContent>
 *                     &lt;/complexType>
 *                   &lt;/element>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/choice>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 */
public interface BodyType {


    /**
     * 
     * @return
     *     possible object is
     *     {@link java.math.BigInteger}
     */
    java.math.BigInteger getRTVLRQSTID();

    /**
     * 
     * @param value
     *     allowed object is
     *     {@link java.math.BigInteger}
     */
    void setRTVLRQSTID(java.math.BigInteger value);

    /**
     * 
     * @return
     *     possible object is
     *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType}
     */
    foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType getFault();

    /**
     * 
     * @param value
     *     allowed object is
     *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType}
     */
    void setFault(foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType value);


    /**
     * Java content class for anonymous complex type.
     * <p>The following schema fragment specifies the expected content contained within this java content object. (defined at file:/D:/tools/trang/trang-20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 33)
     * <p>
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="fault">
     *           &lt;complexType>
     *             &lt;complexContent>
     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 &lt;sequence>
     *                   &lt;element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
     *                   &lt;element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
     *                 &lt;/sequence>
     *               &lt;/restriction>
     *             &lt;/complexContent>
     *           &lt;/complexType>
     *         &lt;/element>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     */
    public interface FaultType {


        /**
         * 
         * @return
         *     possible object is
         *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType.FaultType}
         */
        foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType.FaultType getFault();

        /**
         * 
         * @param value
         *     allowed object is
         *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType.FaultType}
         */
        void setFault(foo.bbs.tbi.firstresponse.EnvelopeType.BodyType.FaultType.FaultType value);


        /**
         * Java content class for anonymous complex type.
         * <p>The following schema fragment specifies the expected content contained within this java content object. (defined at file:/D:/tools/trang/trang-20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 36)
         * <p>
         * <pre>
         * &lt;complexType>
         *   &lt;complexContent>
         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       &lt;sequence>
         *         &lt;element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
         *         &lt;element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
         *       &lt;/sequence>
         *     &lt;/restriction>
         *   &lt;/complexContent>
         * &lt;/complexType>
         * </pre>
         * 
         */
        public interface FaultType {


            /**
             * 
             * @return
             *     possible object is
             *     {@link java.math.BigInteger}
             */
            java.math.BigInteger getFaultcode();

            /**
             * 
             * @param value
             *     allowed object is
             *     {@link java.math.BigInteger}
             */
            void setFaultcode(java.math.BigInteger value);

            /**
             * 
             * @return
             *     possible object is
             *     {@link java.lang.String}
             */
            java.lang.String getFaultstring();

            /**
             * 
             * @param value
             *     allowed object is
             *     {@link java.lang.String}
             */
            void setFaultstring(java.lang.String value);

        }

    }

}


/**
 * Java content class for anonymous complex type.
 * <p>The following schema fragment specifies the expected content contained within this java content object. (defined at file:/D:/tools/trang/trang-20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 14)
 * <p>
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="rule">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="customer" type="{http://www.w3.org/2001/XMLSchema}integer"/>
 *                   &lt;element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
 *                   &lt;element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 */
public interface HeaderType {


    /**
     * 
     * @return
     *     possible object is
     *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType.RuleType}
     */
    foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType.RuleType getRule();

    /**
     * 
     * @param value
     *     allowed object is
     *     {@link foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType.RuleType}
     */
    void setRule(foo.bbs.tbi.firstresponse.EnvelopeType.HeaderType.RuleType value);


    /**
     * Java content class for anonymous complex type.
     * <p>The following schema fragment specifies the expected content contained within this java content object. (defined at file:/D:/tools/trang/trang-20091111/tbi/firstResponseOnly/jaxb2/firstCombined.xsd line 17)
     * <p>
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="customer" type="{http://www.w3.org/2001/XMLSchema}integer"/>
     *         &lt;element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
     *         &lt;element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     */
    public interface RuleType {


        /**
         * 
         * @return
         *     possible object is
         *     {@link java.math.BigDecimal}
         */
        java.math.BigDecimal getSchemaVersion();

        /**
         * 
         * @param value
         *     allowed object is
         *     {@link java.math.BigDecimal}
         */
        void setSchemaVersion(java.math.BigDecimal value);

        /**
         * 
         * @return
         *     possible object is
         *     {@link java.lang.String}
         */
        java.lang.String getSchemaName();

        /**
         * 
         * @param value
         *     allowed object is
         *     {@link java.lang.String}
         */
        void setSchemaName(java.lang.String value);

        /**
         * 
         * @return
         *     possible object is
         *     {@link java.math.BigInteger}
         */
        java.math.BigInteger getCustomer();

        /**
         * 
         * @param value
         *     allowed object is
         *     {@link java.math.BigInteger}
         */
        void setCustomer(java.math.BigInteger value);

    }

}

}

2 个答案:

答案 0 :(得分:2)

你在这里遇到的问题是由于Java不允许你声明一个内部类与外部类具有相同的简单名称。您在类FaultType中有一个类FaultType,这是禁止的,并且是由“Fault”元素中的“fault”元素引起的。

我不知道你是否可以告诉JAXB使用不同的命名策略。也许在XSD中提取命名类型会有所帮助,这会导致JAXB生成顶级类而不是嵌套类。

答案 1 :(得分:2)

完成克里斯蒂安的回答。您可以使用绑定(在架构内部或外部绑定文件(.xjb)中)自定义JAXB将用于特定元素的名称。 请参阅class binding declarations以自定义为给定类型生成的类:

如果复杂类型命名为:

  • 使用<jxb:bindings node="//xs:complexType[@name=’TypeName’]">指定要使用XPath语法自定义的类型,并使用:
  • 使用<jxb:class name="CustomizedClassName">自定义生成的类名。

如果复杂类型已命名,如您的情况,您可以尝试自定义类型的属性(我没有尝试这个并且无法证明这将起作用):

  • 使用<jxb:bindings node=".//xs:element[@name=’elementName’]">指定要自定义的元素(仍然是XPath语法),并且:
  • 使用<jxb:property name="customizedPropertyName"/>自定义生成的属性。