如何使用JDK8从(JAXB)注释的Java类生成XML模式文件
Java API文档中建议的通过运行“schenagen”生成模式的说明适用于JDK7,但不适用于JDK8 以下是文档页面: 以下是本页的一行,其中包含指向说明的链接: " 正在运行架构生成器(schemagen):, " 架构生成器无法工作,因为某些类已从JDK8中删除: “java.lang.ClassNotFoundException:com.sun.mirror.apt.AnnotationProcessorFactory” 这里还建议了另一种解决方案: 此解决方案也适用于JDK7,但不适用于JDK8;这将导致类似的错误: “类未找到com/sun/tools/apt/Main.Class” 根本原因可能是相同的:注释处理工具已从JDK8中删除。 这一变化早在JEP 117中就计划好了:如何使用JDK8从(JAXB)注释的Java类生成XML模式文件,jaxb,java-8,Jaxb,Java 8,Java API文档中建议的通过运行“schenagen”生成模式的说明适用于JDK7,但不适用于JDK8 以下是文档页面: 以下是本页的一行,其中包含指向说明的链接: " 正在运行架构生成器(schemagen):, " 架构生成器无法工作,因为某些类已从JDK8中删除: “java.lang.ClassNotFoundException:com.sun.mirror.apt.AnnotationProcessorFactory” 这里还建议了另一种解决方案: 此解决方案也适用于JDK7,
现在如何使用JDK8从(JAXB)注释的Java类生成XML模式文件?您可以使用
JAXBContext
上的generateSchema
方法生成XML模式:
<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>
org.codehaus.mojo
jaxb2 maven插件
1.6
schemagen
产生资源
com/projectname/model/*.java
${project.build.directory}/schemas
我在这个OTN线程上也提出了同样的问题:我正在研究JAXB的替代方案:我根据Marco的建议找到了解决方案。谢谢。即使使用JDK8,此路径看起来也很有希望。有没有关于如何在Maven pom文件中调用此方法的建议?是否有一个Maven插件基于调用此方法而不使用APT?使用2.2版我可以使schemagen正常工作。建议的1.6版本打印了一条消息,表明源未更改,跳过了架构生成。是的,使用1.6是有效的。(似乎1.5不适用于Java8)。谢谢。