Почему xjc задыхается от этой компактной схемы RelaxNG?

Я пытаюсь использовать xjc для создания привязок JAXB из схемы RelaxNG ссылки Реестр OpenGL API. Он выдает NullPointerException:

$ xjc -cp jaxb-extra-osgi-2.2.7.jar -relaxng-compact registry.rnc 
parsing a schema...
Exception in thread "main" java.lang.NullPointerException
    at com.sun.tools.internal.xjc.reader.Ring.get(Ring.java:82)
    at com.sun.tools.internal.xjc.model.CPropertyInfo.<init>(CPropertyInfo.java:110)
    at com.sun.tools.internal.xjc.model.CSingleTypePropertyInfo.<init>(CSingleTypePropertyInfo.java:57)
    at com.sun.tools.internal.xjc.model.CAttributePropertyInfo.<init>(CAttributePropertyInfo.java:58)
    at com.sun.tools.internal.xjc.reader.relaxng.ContentModelBinder.onAttribute(ContentModelBinder.java:119)
    at com.sun.tools.internal.xjc.reader.relaxng.ContentModelBinder.onAttribute(ContentModelBinder.java:55)
    at com.sun.xml.internal.rngom.digested.DAttributePattern.accept(DAttributePattern.java:58)
    at com.sun.xml.internal.rngom.digested.DPatternWalker.onContainer(DPatternWalker.java:66)
    at com.sun.xml.internal.rngom.digested.DPatternWalker.onGroup(DPatternWalker.java:87)
    at com.sun.xml.internal.rngom.digested.DPatternWalker.onGroup(DPatternWalker.java:51)
    at com.sun.xml.internal.rngom.digested.DGroupPattern.accept(DGroupPattern.java:59)
    at com.sun.tools.internal.xjc.reader.relaxng.RELAXNGCompiler.bindContentModel(RELAXNGCompiler.java:150)
    at com.sun.tools.internal.xjc.reader.relaxng.RELAXNGCompiler.compile(RELAXNGCompiler.java:143)
    at com.sun.tools.internal.xjc.reader.relaxng.RELAXNGCompiler.build(RELAXNGCompiler.java:108)
    at com.sun.tools.internal.xjc.ModelLoader.loadRELAXNG(ModelLoader.java:592)
    at com.sun.tools.internal.xjc.ModelLoader.loadRELAXNGCompact(ModelLoader.java:580)
    at com.sun.tools.internal.xjc.ModelLoader.load(ModelLoader.java:151)
    at com.sun.tools.internal.xjc.ModelLoader.load(ModelLoader.java:104)
    at com.sun.tools.internal.xjc.Driver.run(Driver.java:318)
    at com.sun.tools.internal.xjc.Driver.run(Driver.java:185)
    at com.sun.tools.internal.xjc.Driver._main(Driver.java:108)
    at com.sun.tools.internal.xjc.Driver.access$000(Driver.java:65)
    at com.sun.tools.internal.xjc.Driver$1.run(Driver.java:88)

Что-то еще отсутствует в моем пути к классам?

Я знаю, что поддержка RelaxNG является экспериментальной, так что, возможно, она просто сломана. В качестве обходного пути я преобразовал схему в XSD с помощью Trang:

$ java -jar trang.jar -I rnc -O xsd registry.rnc registry.xsd

person Kevin Krumwiede    schedule 07.02.2016    source источник


Ответы (1)


Ваша трассировка стека, похоже, соответствует известному дефекту (JAXB-1066) в автономном версия JAXB RI. Возможно, это та же проблема в JDK. В отчете об ошибке предлагается патч, но никто не прокомментировал его там (пока).

person Michael Glavassevich    schedule 08.02.2016
comment
Репортер даже включил код, чтобы исправить это, и до сих пор никаких действий в течение года. ПОТРЯСАЮЩИЕ! - person Kevin Krumwiede; 08.02.2016