2014-08-29 4 views
2

У меня есть проект Grails, который имеет зависимость, которая является другим моим проектом, который использует spring-oxm. Мой проект Grails может успешно <import resource="some.xml"> в .xml находится внутри .jar, но он показывает эту ошибку:Ошибка контекстного тракта в Spring OXM

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> 

Вот как я создал компонент для Охт-ИАС:

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="contextPath" value="com.somepackage.commons"/> 
</bean> 

Кроме того, всякий раз, когда я запускаю тесты проекта Maven, весенний контекст приложения загружается отлично, поэтому я уверен, что он работает автономно.

В чем проблема? Я использовал ту же весеннюю зависимость от oxm в обоих моих проектах, почему я все еще сталкиваюсь с этими ошибками? Нужна помощь!

EDIT: Быстрое обходное решение ... вместо импорта моего проекта Maven в качестве зависимости, я попробовал скопировать все код, который у меня был из моего проекта Maven, в проект Grails, и он отлично работает ... все еще хочет знаете, что пошло не так :(

EDIT 2: Я попытался создать компонент по-другому ... Вместо создания самого Spring-компонента я использовал пространство имен oxm. Когда я создал маршаллер в моем проекте Maven, выглядело это так:

<oxm:jaxb2-marshaller id="marshaller" context-path="com.somepackage.commons"/> 

что смешного было в том, что в моем проекте Grails (один я копия вставленного ранее), это выглядело так:

<oxm:jaxb2-marshaller id="marshaller" contextPath="com.somepackage.commons"/> 

Обратите внимание на соглашение camelCase атрибута contextPath. Почему так?

+0

Я нашел то же поведение. На самом деле, редактор xml Spring Tool Suite жалуется, что «contextPath» недействителен, но Maven не будет компилироваться, если он не будет camelCased. Я не исследовал, где двое расходятся и почему еще. –

ответ

1

Убедитесь, что фактический барабан весны весны в дорожке классов указывает на правое xsd. Вы найдете указатель в файле META-INF/spring.schemas. Атрибут «context-path» не определен весной-oxm-3.x.xsd. Он определен весной-oxm-4.x.xsd