无法使用JAXB生成类

时间:2012-05-25 15:29:11

标签: jaxb

我尝试使用JAXB生成类,但我得到一个异常:      IllegalArgumentException:非法模式字符'g' 我使用复杂的XSD文件和绑定文件,如下所示。 有人可以提供调查的地方吗?

<jxb:bindings version="1.0"
           xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           jxb:extensionBindingPrefixes="xjc">
        <jxb:bindings schemaLocation="IFX170_XSD.xsd" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="cy.com.netinfo.netteller.ifx"/>
            </jxb:schemaBindings> 
        </jxb:bindings>
        <jxb:bindings schemaLocation="RemitDetail_Type.xsd" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="cy.com.netinfo.netteller.ifx.remitdetailinfo"/>
            </jxb:schemaBindings> 
        </jxb:bindings>
        <jxb:bindings schemaLocation="$pain.001.001.01.xsd" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="cy.com.netinfo.netteller.ifx.swift.pain_001_001_1"/>
            </jxb:schemaBindings> 
        </jxb:bindings>
        <jxb:bindings schemaLocation="$pain.002.001.01.xsd" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="cy.com.netinfo.netteller.ifx.swift.pain_002_001_1"/>
            </jxb:schemaBindings> 
        </jxb:bindings>
        <jxb:bindings schemaLocation="$pain.004.001.01.xsd" node="/xs:schema">
            <jxb:schemaBindings>
                <jxb:package name="cy.com.netinfo.netteller.ifx.swift.pain_004_001_1"/>
            </jxb:schemaBindings> 
        </jxb:bindings>

2 个答案:

答案 0 :(得分:2)

最后我找到了答案。 问题是由于com.sun.tools.xjc包中的类选项出错。 在方法getPrologComment中,类构建一个本地化消息,从本地化资源包中获取参数fot日期和时间,然后使用固定的Locale.ENGLISH格式化日期。此行为在JAXB 2.2.6中。 我解决了这个问题,只需在jar文件jaxb-xjc.jar的com \ sun \ tools \ xjc \包中更新文件MessageBundle_it.properties(在我的例子中为意大利语)。 我做的改变是: Driver.DateFormat = aaaa.MM.gg(original)to Driver.DateFormat = yyyy / MM / dd(new)and Driver.TimeFormat = hh:mm:ss a z(原始)到Driver.TimeFormat = HH:mm:ss(新) 通过这些更改,我可以根据需要生成类。 HTH 弗拉维奥

答案 1 :(得分:0)

我可能猜测你的一个xsd文件有一个基于正则表达式的限制附加到一个类型/元素。你验证了那些文件吗?