生成以下类后,我收到以下错误。 我需要以不同的方式运行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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="Header">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="rule">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema} anyType">
* <sequence>
* <element name="customer" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
* <element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* <element name="Body">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <choice>
* <element name="RTVL_RQST_ID" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="Fault">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="fault">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </choice>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <choice>
* <element name="RTVL_RQST_ID" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="Fault">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="fault">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </choice>
* </restriction>
* </complexContent>
* </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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="fault">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="faultcode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="faultstring" type="{http://www.w3.org/2001/XMLSchema}string"/>
* </sequence>
* </restriction>
* </complexContent>
* </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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="rule">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="customer" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
* <element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* </sequence>
* </restriction>
* </complexContent>
* </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>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="customer" type="{http://www.w3.org/2001/XMLSchema}integer"/>
* <element name="schemaName" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
* <element name="schemaVersion" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* </sequence>
* </restriction>
* </complexContent>
* </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);
}
}
}
答案 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"/>
自定义生成的属性。