我正在使用Spring Rest with Spring DM(OSGi)。我需要使用JAXB进行编组/解组。当Model对象属于同一个项目时,我可以轻松地将JAXB与Spring一起使用。但是,当我尝试在OSGi(Spring DM)中做同样的事情时,我遇到了问题。因为我将模型对象保存到不同的包中,jaxb2Marshaller
无法找到带注释@XmlRootElement
的模型。
例外是:
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: 来自ServletContext资源的XML文档中的第51行 [/WEB-INF/building-servlet.xml]无效;嵌套异常是 org.xml.sax.SAXParseException; lineNumber:51; columnNumber:52; cvc-complex-type.2.4.c:匹配的通配符是严格的,但没有 可以在元素'tx:annotation-driven'找到声明
请为我建议一些解决方法。
答案 0 :(得分:1)
这很可能与jaxb由于包含jaxb的jre而由系统包提供的事实有关。确保导入它的特殊版本,并确保已安装此版本。这可能会对你有所帮助。您可能还需要确保以正确的方式配置系统包导出的版本。为此,您需要更改etc文件夹中的jre.properties并将正确的版本设置为jaxb包。
答案 1 :(得分:0)
刚刚重新审视我的这篇文章。这个问题早就解决了。我使用了Spring的'Out Of The Box'JAXB Marshaller(org.springframework.oxm.jaxb.Jaxb2Marshaller)为我们编组和编组。对不起,我迟到了,谢谢你的关注。