【问题标题】:How to generate an XML schema file from (JAXB) annotated Java classes, using JDK8如何使用 JDK8 从(JAXB)注释的 Java 类生成 XML 模式文件
【发布时间】:2014-03-20 16:43:14
【问题描述】:

Java API 文档中建议的通过运行“schenagen”生成模式的说明适用于 JDK7,但不适用于 JDK8。

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

以下是此页面中的行,其中包含指向说明的链接:

" 运行模式生成器 (schemagen): [command-line instructions, using the SchemaGen Ant task] "

Schema 生成器不起作用,因为一些类已从 JDK8 中删除: "java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory"

这里建议了另一种解决方案: Generating XSD schemas from JAXB types in Maven?

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

“找不到类com/sun/tools/apt/Main.class”

根本原因可能是相同的:注释处理工具从JDK8中删除。 很久以前在 JEP 117 中计划了此更改: http://openjdk.java.net/jeps/117

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

【问题讨论】:

标签: jaxb java-8


【解决方案1】:

这是“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>

【讨论】:

  • 使用 2.2 版我可以使 schemagen 正常工作。建议的 1.6 版本打印消息源未更改,跳过模式生成。
  • 是的,使用 1.6 有效。 (似乎 1.5 不适用于 Java 8)。谢谢。
【解决方案2】:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多