jaxb – xjc -version可以信任吗?
我花了一天时间调试JAXB的问题,让命名空间错误或丢失(可能与Marshaller.JAXB_FRAGMENT相关,但这不是重点). 我发现在我的背书目录中JAXB RI 2.1.10出现问题. 如果我使用JAXB RI 2.2.4或2.2.6,它是固定的 这是真正令人困惑的东西(以及它花了这么长时间). 在以下JDK中使用JAXB的Linux上发生此问题(即没有任何背书):
但它应该工作正常,如果这个java真的使用相同的JAXB作为RI 2.2.4 !! 请注意,我调试的问题与xjc无关;我只是使用该命令来确定我正在使用的JAXB版本. 同样,我无法使用Java 1.6.0_27在Windows上重现该问题(我的背书目录中没有任何内容),它报告:
然而如果我把2.1.10 RI放在我认可的目录中,问题就出现了.它应该发生在1.6.0_27,如果它真的使用相当于JAXB RI 2.1.10. 在我看来,我遇到的问题已经在2.1.10之后和2.2.4之前的某个地方的参考实现中得到修复,但是上面的两个虚拟机实际上都没有使用他们声称的JAXB版本.或者他们可能使用他们声称的xjc,但不是jaxb-api.jar和jaxb-impl.jar中的内容(我知道命名空间前缀mapper属性和包名中有区别,但是不会造成这个问题). 我已经在Win 7和Ubuntu,tomcat(没有eclipse)和eclipse(没有tomcat)上完成了这些实验,所以我非常有信心我正确地解释了我的发现. 任何人都可以提供有关正在发生的事情的任何见解 如果我是对的,有谁知道各种Sun / Oracle JDK真正使用的JAXB版本是什么? 最佳答案
xjc -version可以信任吗?
是.它将为您提供XJC工具的版本. 是否可以信任xjc -version来提供JAXB (JSR-222)运行时实现的版本? 没有: >不要求XJC工具的版本与JAXB运行时实现的版本匹配. JAXB RI和JAXB Impl包含在JDK / JRE中 Java SE实现(版本6及更高版本)需要包含JAXB(JSR-222)的版本.经常(但不是必须)包含的是JAXB RI的包重命名版本.因此,如果您运行以下内容:
你得到:
如果您下载了JAXB-RI的版本并将其添加到类路径并重新运行相同的演示代码,则输出将更改为以下内容:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |