0

我希望有人经历过这个问题,也许可以有所启发。

我有一个 xml 架构和一个 ant 构建文件。当我在 Windows 和 Mac 上运行 ant 时,输出 .java 文件会有所不同,即使我使用相同的 jaxb-xjc.jar 来进行 xml 编译。Windows 端将属性的“getter”方法命名为“getX”。Mac 方面想将它们命名为“isX”。有没有人经历过这样的事情和/或有解决方案?这在 Windows Vista 和 7 以一种方式执行此操作与 Mac OSX 10.6 和 10.7(在 Mac OSX 10.8 上未经测试)以另一种方式执行此操作之间是一致的。

- - 编辑 - -

我将附上 ant build.xml 文件中的一些代码。

告诉它 xjc 是什么。

<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="classpath"/>
</taskdef>

这是“实际”编译:

编译自动机模式

    <echo>Compiling old automaton schema</echo>
    <xjc schema="${oldxml-schema}" destdir="${src.dir}" package="${oldxml.package}">
        <produces dir="${oldxml-gen.dir}" includes="**/*.java"/>
    </xjc>

    <echo>Compiling the plugin schema</echo>
    <mkdir dir="${plugin-gen.dir}" />
     <xjc schema="${plugin-schema}" destdir="${src.dir}" package="${plugin.package}">
         <produces dir="${plugin-gen.dir}" includes="**/*.java"/>
    </xjc>

    <echo>Compiling the pluginDesumaSide schema</echo>
    <mkdir dir="${pluginDesumaSide-gen.dir}" />
     <xjc schema="${pluginDesumaSide-schema}" destdir="${src.dir}" package="${pluginDesumaSide.package}">
        <produces dir="${pluginDesumaSide-gen.dir}" includes="**/*.java"/>
    </xjc>
</target>

所有目标(我的意思是像 ${} 这样提到的任何目标)都已定义,并且每个链接和编译都正确,除了 Mac 将“getter”方法命名为变量的“is”方法。它们是布尔属性,如果未指定,则具有默认值。

4

1 回答 1

0

从我得到的回复中,我能够谷歌寻找解决方案。显然,由于规范中的一些不一致,这种命名不一致和另一个(getter 返回原语但 setter 只接受对象)对于旧的 xml 编译器来说是偶然的。

通过访问http://jaxb.java.net/并获取新的 jaxb-impl.jar 和 jaxb-xjc.jar 已解决此问题。我下载并运行了 jaxb.jar 文件下载,它创建了所需的 jar。

于 2012-08-08T01:01:27.963 回答