2016-11-17 58 views
1

我有Vendor.xsd,其中名称空间定义引用了供应商特定名称空间http://vendor.com/xjc-plugins。下面一个片段中给出:供应商特定名称空间不受支持的绑定名称空间例外

... 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:common="http://annox.dev.java.net" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:vendor="http://vendor.com/xjc-plugins" 
elementFormDefault="qualified" 
jaxb:extensionBindingPrefixes="vendor common" 
jaxb:version="2.0"> 
... 
xs:complexType name="VendorType"> 
    <xs:annotation> 
     <xs:appinfo> 
      <vendor:package>vendor.package</vendor:package> 
     </xs:appinfo> 
    </xs:annotation> 
... 

当尝试通过使用命令行或XJC生成jaxbs行家-jaxb22-插件以下发生异常:

Unsupported binding namespace "http://vendor.com/xjc-plugins". Perhaps you meant "http://annox.dev.java.net"? 

的行家插件我使用在这里给出:

 <plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb22-plugin</artifactId> 
    <version>0.13.1</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     <configuration> 
      <schemaDirectory>src/main/resources</schemaDirectory> 
      <schemaIncludes> 
      <include>Vendor.xsd</include> 
      </schemaIncludes> 
      <generatePackage>com.vendor.model</generatePackage> 
      <extension>true</extension> 
      <args> 
      <arg>-Xannotate</arg> 
      </args> 
      <plugins> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-basics-annotate</artifactId> 
       <version>1.0.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-basics</artifactId> 
       <version>1.11.1</version> 
      </plugin> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-basics-tools</artifactId> 
       <version>1.11.1</version> 
      </plugin> 
      </plugins> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

任何想法欢迎?

回答

1

您似乎没有在maven-jaxb2-plugin配置的plugins部分中包含您的XJC插件。绑定名称空间必须由某个插件确认。您只包含jaxb2-basics,但不包括承认http://vendor.com/xjc-plugins的插件。

+0

那么你是否说我需要掌握供应商的jxc插件jar?假设有一个 – theo

+0

只要你有'jaxb:extensionBindingPrefixes =“vendor”',你就需要一个插件确认'vendor'命名空间。或者获取插件或者编写一个只会确认这些定制的插件,或者例如通过在处理之前修补架构来移除'jaxb:extensionBindingPrefixes =“vendor”'。最后,与供应商交谈,这个XJC特定的东西不属于公共模式。供应商应将其从模式中移出到绑定文件中。 – lexicore

相关问题