使用xjc生成类文件时不支持的绑定名称空间

时间:2014-02-03 05:44:15

标签: java xml jaxb xsd xjc

我在没有任何帮助的情况下尝试使用谷歌搜索。如果有任何重复,请道歉。

我有以下文件头文件common.xsd

<xs:schema xmlns="http://www.vmware.com/vcloud/v1.5"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
       xmlns:meta="http://www.vmware.com/vcloud/meta"
       jaxb:version="2.0"
       jaxb:extensionBindingPrefixes="meta"
       elementFormDefault="qualified"
       targetNamespace="http://www.vmware.com/vcloud/v1.5"
       version="1.0">

我正在尝试使用xjc命令生成类文件。

xjc -version
xjc version "JAXB 2.1.10 in JDK 6" 
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build JAXB 2.1.10 in JDK 6)

我收到此错误。

[info] [ERROR] Unsupported binding namespace "http://www.vmware.com/vcloud/meta". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
[info]   line 21 of file:/Users/kcherivirala/vmware/dev/corp/zephyr/services/networkservice/app/vcd-schema/src/main/xsd/vcloud/common.xsd

这方面的任何线索都会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

问题在于:

   jaxb:extensionBindingPrefixes="meta"

jaxb:extensionBindingPrefixes声明供应商自定义命名空间的前缀。请参阅this link

  

JAXB RI提供了未定义的其他自定义   JAXB规范。请注意以下事项:

     

这些功能只能在JAXB XJC绑定编译器使用时使用   以-extension模式运行。

     

所有JAXB RI供应商扩展都在。中定义   &#34; http://java.sun.com/xml/ns/jaxb/xjc&#34;命名空间。

     

指定包含扩展绑定声明的名称空间   通过全局属性的出现来到JAXB处理器   @jaxb:实例中的extensionBindingPrefixes   元件。此属性的值是以空格分隔的列表   名称空间前缀。有关更多信息,请参阅部分   JAXB规范的6.1.1。

您只需在自定义绑定时使用此选项。例如,您可以使用xjc:superClass进行自定义以扩展公共超类。在这种情况下,xjc将位于jaxb:extensionBindingPrefixes

如果您只是编译架构,那么架构的前缀肯定不会在jaxb:extensionBindingPrefixes中。所以,XJC只是抱怨它在那里,但不是一个有约束力的扩展。