【发布时间】:2014-09-23 05:40:55
【问题描述】:
几年前,我编写了一个使用 JAXB 为 XML 模式生成 Java 绑定的应用程序。多年来,应用程序代码和模式已经更新了很多,但自 2008 年以来,JAXB jar 保持不变,那时我开始在这个应用程序中使用 JAXB。我一直在使用 Ant 构建应用程序,包括生成和编译绑定,并且在至少两台 XP Pro 开发机器上一切正常。我对架构进行了一些更改,并且从未考虑过 JAXB。
最近我尝试在一台新笔记本电脑上从头开始重新构建应用程序,但构建一直失败。新的 64 位笔记本电脑运行的是 windows 7 Pro,它有一个更新的 JDK (1.7.0_45) 和一个新版本的 Ant (1.9.3)。通过切换到更新版本的 ant (1.9.4) 并切换到最新的 JAXB jar,我能够解决一些奇怪的问题。在这一点上,我什至不记得这些问题是什么(但我可以通过在 SVN 中恢复到较旧的 JAXB jar 来重新创建它们)。
升级 JAXB 后,我遇到了新问题。首先,ant 中的 xjc 任务似乎对target 属性的解释不同;它引发了一些错误,显然destdir 具有target 过去的语义。
其次,此任务不再生成带有名称应该以 Type 结尾的实现类的 impl 包,因此我的其余代码因一堆编译问题而失败。
有没有办法使新的 JAXB 版本向后兼容?我的其他选择是尝试更新代码以使用新绑定,这似乎是很多不必要的工作,或者恢复到旧的 JDK 和 Ant。
【问题讨论】: