#java #ant #jaxb #xjc
#java #ant #jaxb #xjc
Вопрос:
Я нахожусь в процессе преобразования нескольких xsd в java с помощью JAXB, я использую Jdeveloper версии 10.1.3.4 в качестве моей IDE. Версия JAXB 1.0, Xerces-J 2.6.2
Ниже приведена последовательность целей сборки и их выходных данных. Я также пытался использовать переключатель -nv, даже вышеупомянутый не сработал. Я новичок в JAXB.
Пожалуйста, найдите приведенный ниже журнал ant:
[echo] Logging started build_2011-11-12.log
writelog: duration 0 seconds
generation.jaxb.init:
[mkdir] Created dir: C:UsersXXXYProjectsXXXInterfacegenerated
generation.jaxb.init: duration 0 seconds
generate.jaxb:
[xjc] build id of XJC is 1.0.2-b15-fcs
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdcreate_ship_to.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdcustom_ship.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdgeneric_notes.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdmeter_log.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdpart_need.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdpart_usage.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdplace.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdplace_type.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdrequest.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdrequest_contact.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdrequest_event.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdrequest_product.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdrequest_text.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdship_to.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdshipment.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdstock.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdtime_zone_code.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_generic_notes.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_meterlog.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_part_need.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_part_usage.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_place.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_request.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_request_contact.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_request_event.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_request_product.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_request_text.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_ship_to.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdupdate_type.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdwhos_place.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdwmetrix_install_info.xsd
[xjc] Checking timestamp of C:UsersXXXYProjectsXXXInterfacexsdwmetrix_person.xsd
[xjc] the last modified time of ths inputs is 1320964837275
[xjc] the last modified time of the outputs is -9223372036854775808
[xjc] Compiling file:/C:/Users/XXX/Projects/XXXY/Interface/xsd/create_ship_to.xsd and others
[xjc] [INFO] Using Xerces from jar:file:/C:/Users/XXX/Installs/JDevStudio10.1.3.4/ant/lib/xercesImpl.jar!/org/apache/xerces/impl/Version.class
[xjc] unknown location
[xjc]
generate.jaxb: duration 0 seconds
BUILD FAILED
C:UsersXXXYProjectsXXXInterfacebuild.xml:60: java.lang.NullPointerException
at org.apache.tools.ant.Task.perform(Task.java:373)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Caused by: java.lang.NullPointerException
at com.sun.xml.bind.unmarshaller.DOMScanner.buildNamespaceSupport(DOMScanner.java:121)
at com.sun.xml.bind.unmarshaller.DOMScanner.parseWithContext(DOMScanner.java:91)
at com.sun.tools.xjc.reader.internalizer.DOMForestScanner.scan(DOMForestScanner.java:57)
at com.sun.tools.xjc.reader.internalizer.DOMForestScanner.scan(DOMForestScanner.java:65)
at com.sun.tools.xjc.reader.internalizer.DOMForestParser.parse(DOMForestParser.java:67)
at com.sun.tools.xjc.GrammarLoader$XMLSchemaForestParser.parse(GrammarLoader.java:230)
at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.java:183)
at com.sun.xml.xsom.impl.parser.XSOMParser.parse(XSOMParser.java:162)
at com.sun.tools.xjc.GrammarLoader.loadXMLSchema(GrammarLoader.java:381)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:130)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:79)
at com.sun.tools.xjc.XJCTask._doXJC(XJCTask.java:331)
at com.sun.tools.xjc.XJCTask.doXJC(XJCTask.java:283)
at com.sun.tools.xjc.XJCTask.execute(XJCTask.java:227)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
... 10 more
--- Nested Exception ---
java.lang.NullPointerException
at com.sun.xml.bind.unmarshaller.DOMScanner.buildNamespaceSupport(DOMScanner.java:121)
at com.sun.xml.bind.unmarshaller.DOMScanner.parseWithContext(DOMScanner.java:91)
at com.sun.tools.xjc.reader.internalizer.DOMForestScanner.scan(DOMForestScanner.java:57)
at com.sun.tools.xjc.reader.internalizer.DOMForestScanner.scan(DOMForestScanner.java:65)
at com.sun.tools.xjc.reader.internalizer.DOMForestParser.parse(DOMForestParser.java:67)
at com.sun.tools.xjc.GrammarLoader$XMLSchemaForestParser.parse(GrammarLoader.java:230)
at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.java:183)
at com.sun.xml.xsom.impl.parser.XSOMParser.parse(XSOMParser.java:162)
at com.sun.tools.xjc.GrammarLoader.loadXMLSchema(GrammarLoader.java:381)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:130)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:79)
at com.sun.tools.xjc.XJCTask._doXJC(XJCTask.java:331)
at com.sun.tools.xjc.XJCTask.doXJC(XJCTask.java:283)
at com.sun.tools.xjc.XJCTask.execute(XJCTask.java:227)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Пожалуйста, помогите:
Комментарии:
1. JAXB 1.0 довольно старый, можете ли вы использовать JAXB 2 вместо него? Для этого требуется как минимум Java SE 5. Реализация включена в Java SE 6 и 7 (также доступны другие, такие как EclipseLink MOXy и Apache JaxMe).
2. Спасибо, Блейз, за ваш быстрый ответ. На самом деле обновление произойдет через некоторое время. К сожалению, мне пришлось поработать над незначительными изменениями в существующей инфраструктуре.
3. Блейз здесь — герцог преуменьшения. Если быть откровенным, вам нужно было бы приставить пистолет к голове, чтобы использовать JAXB 1.0 в 2011 году. JRE 6 поставляется со встроенным JAXB 2.1, JRE 7 поставляется с JAXB 2.2. Утилиты намного лучше (например, плагины maven), чем с JAXB 1.0, сгенерированный код намного понятнее, а зависимости от библиотек значительно сокращены, и вы действительно можете найти его в Интернете.