我有一个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问题。

09-17 13:56