如何使用JDK8从(JAXB)带注释的Java类生成XML模式文件

ali*_*i65 5 jaxb java-8

通过运行Java API文档中建议的"schenagen"生成模式的指令适用于JDK7,但不适用于JDK8.

这是文档页面:http: //download.java.net/jdk8/docs/technotes/guides/xml/jaxb/index.html

以下是此页面中的行以及指示的链接:

"运行模式生成器(schemagen):[命令行指令,使用SchemaGen Ant任务] "

由于某些类已从JDK8中删除,因此模式生成器不起作用:"java.lang.ClassNotFoundException:com.sun.mirror.apt.AnnotationProcessorFactory"

这里有另一个解决方案: 在Maven中从JAXB类型生成XSD架构?

此解决方案也适用于JDK7,但不适用于JDK8; 它最终会出现类似的错误:

"Class not foundcom/sun/tools/apt/Main.class"

根本原因可能是相同的:注释处理工具从JDK8中删除.这一变化计划在很久以前的JEP 117中进行:http: //openjdk.java.net/jeps/117

如何使用JDK8从(JAXB)带注释的Java类生成XML模式文件?

小智 8

这是"jaxb2-maven-plugin"中的一个错误.您必须使用插件的1.6或更高版本

       <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>schemagen</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <includes>
                            <include>com/projectname/model/*.java</include>
                        </includes>
                        <outputDirectory>${project.build.directory}/schemas</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)