JAXB - The schemaBindings customization is not associated with any schema element
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
Comments
-
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 theschemaBindings
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?