Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用xjc生成类文件时不支持绑定命名空间_Java_Xml_Jaxb_Xsd_Xjc - Fatal编程技术网

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

Java 使用xjc生成类文件时不支持绑定命名空间,java,xml,jaxb,xsd,xjc,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

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

对于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">
我得到了这个错误

[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
这方面的任何线索都会有很大帮助。

问题在于:

   jaxb:extensionBindingPrefixes="meta"
jaxb:extensionBindingPrefixes
声明供应商自定义名称空间的前缀。看

JAXB RI提供了用户未定义的其他定制 JAXB规范。注意以下几点:

这些特性只能在安装JAXB XJC绑定编译器时使用 在-extension模式下运行

所有JAXB RI供应商扩展都在 “”命名空间

指定了包含扩展绑定声明的命名空间 通过全局属性的出现,将数据传输到JAXB处理器 @jaxb:的实例中的extensionBindingPrefixes 元素。此属性的值是以空格分隔的 名称空间前缀。有关更多信息,请参阅第节 JAXB规范的第6.1.1条

您只需要在自定义绑定时使用它。例如,您可以使用
xjc:superClass
进行自定义,以扩展一个通用的超类。在这种情况下,
xjc
将位于
jaxb:extensionbindingprifixes


如果您只是编译模式,那么模式的前缀肯定不会出现在
jaxb:extensionbindingprofixes
中。所以,XJC只是抱怨它在那里,但不是绑定扩展。

检查一下这个链接。。不,它没有帮助。我没有任何绑定xml文件。common.xsd文件的第21行有什么内容?这就是错误所在,所以我认为您应该在问题中说明这一点。顺便说一句,您是如何得到这个.xsd文件的?它不是正常的vcloud 1.5 common.xsd模式;这个模式没有任何jaxb:attributes。得到了生成文件的jar文件,解决了我的问题。但仍然不知道根本原因。第21行是“xmlns:meta=”“,关于jaxb,我不知道,xsd文件已经存在于我正在使用的repo中
   jaxb:extensionBindingPrefixes="meta"