我有一个Grails项目,它有一个依赖项,这是我的另一个使用spring-oxm的项目。我的Grails项目可以成功地<import resource="some.xml">通位于.jar内部的.xml,但它显示以下错误:
Attribute 'context-path' is not allowed to appear in element 'oxm:jaxb2-marshaller'我对我的Grails BuildConfig.groovy有以下依赖:
compile ('org.springframework:spring-oxm:3.1.0.RELEASE')以及对我的另一个(Maven)项目的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>下面是我为oxm-marshaller创建bean的方式:
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.somepackage.commons"/>
</bean>此外,每当我运行Maven项目的测试时,spring应用程序上下文都会完美加载,这就是为什么我确信它可以独立运行的原因。
这里的问题是什么?我在我的两个项目中使用了相同的spring-oxm依赖,为什么我仍然会遇到这些错误?需要帮助!
编辑:快速解决方法...我没有将Maven项目作为依赖项导入,而是尝试将Maven项目中的所有代码复制粘贴到Grails项目中,它工作得很好……还想知道这里出了什么问题吗?
编辑2:我尝试用一种不同的方式创建bean ...我没有创建Spring bean本身,而是使用了oxm名称空间。当我在Maven项目中创建编组程序时,它看起来是这样的:
<oxm:jaxb2-marshaller id="marshaller" context-path="com.somepackage.commons"/>有趣的是,在我的Grails项目(我之前复制粘贴的项目)中,它看起来是这样的:
<oxm:jaxb2-marshaller id="marshaller" contextPath="com.somepackage.commons"/>请注意contextPath属性的camelCase约定。为什么会这样呢?
发布于 2015-11-18 04:14:41
检查类路径中实际的spring oxm jar是否指向正确的xsd。您将在META-INF/spring.schemas文件中找到该指针。spring-oxm-3.x.xsd中没有定义“context-path”属性。它在spring-oxm-4.x.xsd中定义
https://stackoverflow.com/questions/25562351
复制相似问题