我正在尝试使用jaxb2 maven插件从xsd生成Java类。
在生成类时,它提供以下异常:
SAXParseException绑定声明命名空间 " http://annox.dev.java.net"将被忽略,因为它不是 由jaxb:extensionBindingPrefixes属性指定。
这是xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.emc.com/concerto/v2.0"
xmlns:val="http://annox.dev.java.net/javax.validation.constraints"
xmlns:annox="http://annox.dev.java.net"
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.emc.com/concerto/v2.0" elementFormDefault="qualified" version="2.0">
<xs:complexType name="ValueType">
<xs:annotation>
<xs:documentation xml:lang="en">
Represents the value in a key-value pair.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="vType" type="xs:string" use="required">
<xs:annotation>
<xs:documentation source="modifiable">always</xs:documentation>
<xs:documentation xml:lang="en">
Value type. Could be String, Number, DateTime or Boolean.
</xs:documentation>
<xs:documentation source="required">true</xs:documentation>
<xs:appinfo>
<annox:annotate target="field">
<val:NotNull/>
</annox:annotate>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
我该如何解决这个问题?
答案 0 :(得分:1)
您需要将命名空间http://annox.dev.java.net
的命名空间前缀添加到属性jaxb:extensionBindingPrefixes
,如错误消息所示:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.emc.com/concerto/v2.0"
xmlns:val="http://annox.dev.java.net/javax.validation.constraints"
xmlns:annox="http://annox.dev.java.net"
jaxb:extensionBindingPrefixes="annox"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.emc.com/concerto/v2.0"
elementFormDefault="qualified"
version="2.0">