我有一个xsd文件,当使用jaxb-2 maven插件进行编译时,该文件会生成Java源代码。
我的xsd的标头是:
<schema targetNamespace="example.company.com"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:prefix="example.company.com">
每当我尝试使用以下代码获取用于编组/拆组的JAXBContext时:
JAXBContext jc = JAXBContext.newInstance("com.company.example", com.company.example.ObjectFactory.class.getClassLoader());
我在控制台中收到数百条如下所示的错误消息:
找不到com.company.example的XmlSchema批注
在所有这些错误消息之后,封送工作。我想摆脱错误。
jaxb2 maven插件在我的pom中定义如下:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.3.1</version>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.1.13</version>
</dependency>
<dependency>
<groupId>net.sourceforge.ccxjc</groupId>
<artifactId>cc-xjc-plugin</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>-enableIntrospection -verbose</arguments>
<schemaDirectory>${basedir}/src/main/xsd</schemaDirectory>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<packageName>com.company.example</packageName>
<verbose>true</verbose>
<failOnNoSchemas>true</failOnNoSchemas>
<clearOutputDir>false</clearOutputDir>
<arguments>-copy-constructor</arguments>
<extension>true</extension>
</configuration>
</plugin>
最佳答案
看起来好像没有编译从XML Schema生成的package-info.java文件(包含@XmlSchema
注释)和其他模型文件一样。
更新资料
我正在运行OSGi并使用Java SE
您应该确保在清单中导入javax.xml.bind
包。它们可能是OSGi环境中ClassLoader
类的javax
问题。