JAXB - The schemaBindings customization is not associated with any schema element

12,532

Your jaxb:schemaBindings must associate bindings with a certain schema schema. Via schema location or scd. Please see http://jaxb.java.net/guide/Customizing_Java_packages.html

Share:
12,532
asgs
Author by

asgs

Github, HackerEarth, Tech Blogs, LinkedIn and Twitter.

Updated on June 09, 2022

Comments

  • asgs
    asgs almost 2 years

    I'm trying to generated Java classes from a set of XSD files using the Maven XJC plugin with a custom binding. The customization is added to prefix JAXB generated classes. When the maven build runs, however, the XJC plugin doesn't seem to recognize the schemaBindings element and throws the exception as under.

    [ERROR] Error while parsing schema(s).Location [ file:/C:/blah/bindings.xjb{5,25}].
    com.sun.istack.SAXParseException2: The "jaxb:schemaBindings" customization is no
    t associated with any schema element.
            at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Intern
    alizer.java:632)
            at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Intern
    alizer.java:626)
            at com.sun.tools.xjc.reader.internalizer.Internalizer.move(Internalizer.
    java:451)
            at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internal
    izer.java:160)
            at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internal
    izer.java:109)
            at com.sun.tools.xjc.reader.internalizer.DOMForest.transform(DOMForest.j
    ava:449)
            at com.sun.tools.xjc.ModelLoader.buildDOMForest(ModelLoader.java:345)
            at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:377)
            at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:174)
            at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:119)
            at org.jvnet.mjiip.v_2_2.XJC22Mojo.loadModel(XJC22Mojo.java:45)
            at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:35)
            at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:22)
            at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:282)
            at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:147)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
    nManager.java:490)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
    ultLifecycleExecutor.java:694)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
    fecycle(DefaultLifecycleExecutor.java:556)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
    ltLifecycleExecutor.java:535)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
    dleFailures(DefaultLifecycleExecutor.java:387)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
    ts(DefaultLifecycleExecutor.java:348)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
    fecycleExecutor.java:180)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
            at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:6
    0)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    
            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    

    The bindings.jxb is as follows.

    <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               jaxb:version="2.1" schemaLocation="blah.xsd">      
        <jaxb:schemaBindings>
            <jaxb:nameXmlTransform>
                  <jaxb:elementName suffix="Type"/>
            </jaxb:nameXmlTransform> 
        </jaxb:schemaBindings>
    </jaxb:bindings>
    

    The following plugins are used for the generating the Java Classes. Pasting the relevant mvn snippet here.

    <plugin>   
    
        <groupId>org.jvnet.jaxb2.maven2</groupId>
    
        <artifactId>maven-jaxb2-plugin</artifactId>
    
        <version>0.8.0</version>
    
            <executions>
    
                <execution>
    
                    <goals>
    
                        <goal>generate</goal>
    
                    </goals>
                </execution>
    
            </executions>
    
            <dependencies>
    
                <dependency>
    
                    <groupId>com.sun.xml.bind</groupId>
    
                    <artifactId>jaxb-xjc</artifactId>
    
                    <version>2.2.6</version>
    
                </dependency>
    
                <dependency>
    
                    <groupId>com.sun.xml.bind</groupId>
    
                    <artifactId>jaxb-impl</artifactId>
    
                    <version>2.2.6</version>
    
                </dependency>
    
            </dependencies>
        <configuration>
    
                                   <schemaDirectory>./src/main/resources</schemaDirectory>
    
                        <includeBindings>
                            <includeBinding>**/*.xjb</includeBinding>
                        </includeBindings>
                        <extension>true</extension>
    
                    </configuration>
    
                </plugin>
    

    The only other discussion I could find on this issue revolves about JAX-WS which I don't use as there's no WSDL files involved here. It's all XSD files here.

    I don't see why this error has to occur because the JAXB's binding.xsd file indeed defines the schemaBindings element as seen below.

    <xs:element name="schemaBindings" substitutionGroup="jaxb:declaration">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="0" ref="jaxb:package"/>
            <xs:element minOccurs="0" ref="jaxb:nameXmlTransform"/>
          </xs:sequence>
          <xs:attribute name="map" type="xs:boolean" />
        </xs:complexType>
    </xs:element>
    

    Any hints on this problem would be very much appreciated. Please let me know if more inputs are needed. Thanks!

    EDIT: A lot of people on the Internet seem to have used the schemaBindings without any issues. May be this is an issue with the dependencies mentioned in the question?