JAXB xjc情节编译失败*以随机方式*(编译器无法兑现......)

时间:2013-06-23 22:37:23

标签: java jaxb xjc

更新1:我用三个最小的XSD文件创建了这个问题的缩小范围,并发布了一个关注问题本身的新问题(而不是 xjc行为中的随机性) in this SO question

更新2:在JAXB的错误跟踪器here上发布了问题报告。

我在使用情节编译的多个 xsd 模式文件的设置中使用最新的2.2.7 JAXB RI xjc 的实现。我正在使用 Ant 进行构建,以便一切都可以重现,对吧?错误!事实证明, xjc 代码生成失败,并显示如下消息:

  [xjc] [ERROR] compiler was unable to honor this schemaBinding customization. It is attached to a wrong place, or its inconsistent with other bindings.
  [xjc]   line 581 of file:/home/boohaha/unableToHonorSchemaBinding/CEABase.xsd.episode
  [xjc] 
  [xjc] [ERROR] (the above customization is attached to the following location in the schema)
  [xjc]   line 9 of file:/home/boohaha/unableToHonorSchemaBinding/src/_int/esa/esavo/ivoa/jaxb/schemas/VOResource-v1.0.xsd
  [xjc] 

令人震惊的是, xjc 任务(ant clean && ant的连续Ant调用会产生不同的结果。编译再次失败,在同一目标( jaxb-vo.ceaservice )失败,消息类型相同(无法兑现)但消息的细节是不同的(它在某些其他文件中抱怨其他行)。我进行了一些实验,发现它抱怨了4到5个不同的位置(多次运行)。在所有情况下,它都是文件中的最后一个绑定,对我来说是 xjc 解析代码中的一个错误。

但是,无论我的设置中的错误或错误是什么,代码生成器应该表现出这种随机行为是不可思议的!我变得偏执并且多次测试,没有互联网连接。同样的事情,随机性持续存在(有趣的是,有些线看起来比其他线更频繁,但它总是最后的绑定)。您可以获得用例并尝试使用:

git clone https://github.com/mperdikeas/unable_to_honor.git && cd unable_to_honor && ant

我的问题是:

  1. 为什么会出现此错误
  2. xjc代码生成器如何以随机方式失败,除非它使用一些“聪明”的线程来加快速度
  3. 更新的 请参阅帖子顶部的更新说明。

0 个答案:

没有答案