I used JAXB to bind my xsd and then tried to create a JAXBContext:
JAXBContext jaxbContext = JAXBContext.newInstance("my package name");
But JAXB provides 180 IllegalAnnotationsException exceptions.
Most exceptions have the following messages:
- XXX is an interface and JAXB cannot handle interfaces
- XXX has no default-no-arg constructor
- @ XmlAttribute / @ XmlValue must be referenced in a Java type that displays text in XML.
When I look at the created classes, none of them are interfaces, and I cannot understand why JAXB interprets them as interfaces.
Here is the stack trace of one of the errors reported by JAXB:
com.sc.md.datatypes.schemas.csemessage.EnvelopeType is an interface, and JAXB can't handle interfaces. this problem is related to the following location: at com.sc.md.datatypes.schemas.csemessage.EnvelopeType at protected com.sc.md.datatypes.schemas.csemessage.EnvelopeType com.sc.md.datatypes.schemas.csemessage.cseMessage.envelope at com.sc.md.datatypes.schemas.csemessage.cseMessage com.sc.md.datatypes.schemas.csemessage.EnvelopeType does not have a no-arg default constructor. this problem is related to the following location: at com.sc.md.datatypes.schemas.csemessage.EnvelopeType at protected com.sc.md.datatypes.schemas.csemessage.EnvelopeType com.sc.md.datatypes.schemas.csemessage.cseMessage.envelope at com.sc.md.datatypes.schemas.csemessage.cseMessage
And so the type is defined in xsd:
<xs:complexType name="EnvelopeType"> <xs:sequence> <xs:element name="Sent" type="DateTimeType"/> <xs:element name="Identifier" type="String_1_14"/> <xs:element name="AcknowledgementCode" type="AcknowledgementCodeType"/> </xs:sequence>
<xs:simpleType name="AcknowledgementCodeType"> <xs:restriction base="xs:string"> <xs:enumeration value="m"/> <xs:enumeration value="p"/> </xs:restriction> </xs:simpleType>
Here is the pom.xml that I used to create the binding:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cs</groupId> <artifactId>cs-jaxb</artifactId> <packaging>jar</packaging> <dependencies> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.4-1</version> </dependency> </dependencies> <name>cs jaxb</name> <version>1.0.0</version> <parent> <artifactId>hip-jaxb-parent</artifactId> <groupId>com.cs</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <build> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.8.0</version> <executions> <execution> <id>CS</id> <goals> <goal>generate</goal> </goals> <configuration> <schemaDirectory>src/main/resources/</schemaDirectory> <schemaIncludes> <include>**/*.xsd</include> </schemaIncludes> </configuration> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
Please be patient with me, as the first time I ask a question on the Internet :)
source share