2012-05-25 2 views
0

Я пытаюсь сгенерировать классы с использованием JAXB, но я получаю исключение: IllegalArgumentException: символ нелегального шаблона 'g' I'using сложный XSD-файл и файл привязки, как показано ниже. Может ли кто-нибудь дать понять, где провести расследование?не может генерировать классы с помощью JAXB

<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> 

+0

Как вы вызываете xjc (аргументы) и что такое схема? – tdrury

+0

Похоже, что annox использует «g» в качестве префикса пространства имен в своих примерах. Вы уверены, что определили это пространство имен в верхней части схемы? – tdrury

+0

Привет, tdrury вот объявление пространства имен для 5 файлов xsd: flavio

ответ

0

Я мог бы предположить, что один из ваших XSD файлов есть ограничение регулярных выражений на основе прикрепленную к/элемента типа. Вы подтвердили эти файлы?

2

Наконец-то я нашел ответ. Проблема связана с ошибкой в ​​классе Options в пакете com.sun.tools.xjc. В методе getPrologComment класс создает локализованное сообщение с параметром fot date и time из локализованного пакета ресурсов, но затем форматирует дату с использованием фиксированного Locale.ENGLISH. Такое поведение находится внутри JAXB 2.2.6. Я решил проблему просто обновить файл MessageBundle_it.properties (в моем случае для итальянского) в пакете com \ sun \ tools \ xjc \ jar-файла jaxb-xjc.jar. Изменения, которые я сделал, были: Driver.DateFormat = aaaa.MM.gg (оригинал) для Driver.DateFormat = yyyy/MM/dd (новый) и Driver.TimeFormat = hh: mm: ss az (original) to Driver .TimeFormat = HH: mm: ss (new) С этими изменениями мне удалось сгенерировать классы по мере необходимости. HTH Flavio

Смежные вопросы