2012-08-03 60 views
0

我希望有人遇到過這個問題,也許可以解釋一下。XML架構方法命名不一致

我有一個xml架構和一個ant構建文件。當我在Windows上運行ant與Mac時,輸出.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'方法。它們是布爾屬性,如果未指定,它們具有默認值。

+0

請包含更多信息。這個XML Schema使用什麼工具?看起來你正在生成代碼? – 2012-08-03 19:36:09

+0

您使用的是哪個版本的JDK? – 2012-08-03 20:46:02

+0

@JohnSaunders BlaiseDoughan 不一致性已被發現與Java 1.6.23,1.6.26 Mac和Windows和運行1.7的Windows。生成getX函數。 我正在使用jaxb-xjc.jar綁定編譯器。當我運行java -jar jaxb-xjc.jar -version時,它響應「hudson-jaxb-ri-2.1-661」。我正在使用模式來生成稍後用於爲程序「加載」xml文件的類。 – Lan 2012-08-06 13:19:18

回答

0

從我得到的答覆我能夠谷歌的解決方案。顯然這個命名不一致,另一個(getter返回一個原語,但setter只接受對象)由於規範中的某些不一致而顯而易見地出現在較舊的xml編譯器中。

這是通過去http://jaxb.java.net/並得到一個新的jaxb-impl.jar & jaxb-xjc.jar。我下載並運行了jaxb.jar文件下載,並創建了所需的jar包。