Не удалось создать глобальную фабрику контекста hybris из-за ошибки создания компонента с именем ‘marshaller’

#spring #exception #hybris

#spring #исключение #sap-commerce-cloud

Вопрос:

Я следую вики-маршрутам ядра hybris на hybris 5.5.1 с jdk 1.8. У меня все работает нормально в этом проекте cuppy, но я не могу выполнить ни один из тестовых примеров, приведенных в этом трейле. Всякий раз, когда я пытаюсь запустить junit-тест любого из тестовых классов, я получаю исключение как :-

org.springframework.beans.Исключение FatalBeanException: не удалось создать глобальную фабрику контекста Context hybris правильно из-за ошибки создания компонента с именем ‘marshaller’: сбой вызова метода инициализации; вложенным исключением является org.springframework.oxm.UncategorizedMappingException: Неизвестное исключение JAXB; вложенное исключение — javax.xml.bind.JAXBException: не удалось создать экземпляр поставщика com.sun.xml.internal.bind.v2.ContextFactory: javax.xml.bind.Исключение JAXBException: «de.hybris.platform.cuppy.ws.openligadb.types» не содержит ObjectFactory.class или jaxb.index — со связанным исключением:

Вот трассировка стека, которую я получаю в отношении исключения на моей консоли :-

[0;32mINFO [main] (junit) [HybrisContextFactory] Загрузка <> spring config из расширения (cuppy), расположенного в (global-cuppy-spring.xml ,cuppy-ws-spring.xml ) потребовалось: (63,76 мс) [m[0;33mWARN [main] (junit) [CloseAwareApplicationContext] Исключение, возникшее во время инициализации контекста — отмена попытки обновления [morg.springframework.beans.factory.Исключение BeanCreationException: ошибка создания компонента с именем ‘marshaller’: не удалось вызвать метод инициализации; вложенным исключением является org.springframework.oxm.UncategorizedMappingException: Неизвестное исключение JAXB; вложенным исключением является javax.xml.bind.JAXBException: не удалось создать экземпляр поставщика com.sun.xml.internal.bind.v2.ContextFactory: javax.xml.bind.Исключение JAXBException: «de.hybris.platform.cuppy.ws.openligadb.types» не содержит ObjectFactory.class или jaxb.index — со связанным исключением: [javax.xml.bind.Исключение JAXBException: «de.hybris.platform.cuppy.ws.openligadb.types» не содержит ObjectFactory.class или jaxb.index] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.GetObject(AbstractBeanFactory.java:303) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762) в org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryинициализация (AbstractApplicationContext.java:757) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) в de.hybris.platform.core.HybrisContextFactory.refreshContext(HybrisContextFactory.java:98) в de.hybris.platform.core.HybrisContextFactory $ GlobalContextFactory.build(HybrisContextFactory.java:176) в de.hybris.platform.core.HybrisContextHolder.getGlobalInstanceCached(HybrisContextHolder.java:134) в de.hybris.platform.core.HybrisContextHolder.getGlobalInstance(HybrisContextHolder.java:113) в de.hybris.platform.core.Registry.getSingletonGlobalApplicationContext(Registry.java: 1059) в de.hybris.platform.cache.impl.RegionCacheAdapter.getController(RegionCacheAdapter.java:75) в de.hybris.platform.cache.impl.RegionCacheAdapter.getOrAddUnit(RegionCacheAdapter.java: 205) в de.hybris.platform.cache.AbstractCacheUnit.get(AbstractCacheUnit.java:180) в de.hybris.platform.persistence.type.ComposedType_HJMPWrapper $FindAll0FinderResult.getFinderResult(ComposedType_HJMPWrapper.java:1543) в de.hybris.platform.persistence.type.ComposedType_HJMPWrapper.ejbFindAll(ComposedType_HJMPWrapper.java: 1598) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect .Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) в java.lang.reflect.Метод.invoke(Method.java:497) в de.hybris.platform.util.Utilities.callMethod(Utilities.java: 1069) в de.hybris.platform.util.Utilities.callMethod(Utilities.java: 1059) в de.hybris.platform.persistence.framework.HomeInvocationHandler.invoke(HomeInvocationHandler.java:93) в com.sun.proxy.$Proxy15.findAll(неизвестный источник) в de.hybris.platform.persistence.type.TypeManagerEJB.getAllItemTypes(TypeManagerEJB.java:177) в de.hybris.platform.persistence.property.DBPersistenceManager.loadAllTypes(DBPersistenceManager.java:631) в de.hybris.platform.persistence.property.DBPersistenceManager.loadPersistenceInfosInternalInTX(DBPersistenceManager.java:614) в de.hybris.platform.persistence.property.DBPersistenceManager.loadPersistenceInfosSafe(DBPersistenceManager.java:569) в de.hybris.platform.persistence.property.DBPersistenceManager.loadPersistenceInfos(DBPersistenceManager.java: 539) в de.hybris.platform.core.AbstractTenant.doStartupSafe(AbstractTenant.java:702) в de.hybris.platform.core.AbstractTenant.doStartUp(AbstractTenant.java:656) в de.hybris.platform.core.Запущен Registry.assuretenant(Registry.java: 639) в de.hybris.platform.core.Registry.activateTenant(Registry.java:700) в de.hybris.platform.core.Registry.setcurrentenant(Registry.java:544) в de.hybris.platform.util.Utilities.setJUnitTenant(Utilities.java:1472) в de.hybris.platform.testframework.runlistener.PlatformRunListener.testRunStarted(PlatformRunListener.java:44) в de.hybris.platform.testframework.ChainingRunNotifierWrapper $ 1.notifyListener(ChainingRunNotifierWrapper.java:97) в de.hybris.platform.testframework.Цепочка runnotifierwrapper $SafeNotifier.run(цепочка runnotifierwrapper.java:239) в de.hybris.platform.testframework.Запущен файл ChainingRunNotifierWrapper.fireTestRunStarted(ChainingRunNotifierWrapper.java:99) в de.hybris.platform.testframework.HybrisJUnit4ClassRunner.run(HybrisJUnit4ClassRunner.java:124) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) в org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192), вызванной: org.springframework.oxm.UncategorizedMappingException: Неизвестное исключение JAXB; вложенным исключением является javax.xml.bind.JAXBException: не удалось создать экземпляр поставщика com.sun.xml.internal.bind.v2.ContextFactory: javax.xml.bind.Исключение JAXBException: «de.hybris.platform.cuppy.ws.openligadb.types» не содержит ObjectFactory.class или jaxb.index — со связанным исключением: [javax.xml.bind.Исключение JAXBException: «de.hybris.platform.cuppy.ws.openligadb.types» не содержит ObjectFactory.class или jaxb.index] в org.springframework.oxm.jaxb.Jaxb2Marshaller.convertJaxbException(Jaxb2Marshaller.java:888) в org.springframework.oxm.jaxb.Jaxb2Marshaller.getJaxbContext(Jaxb2Marshaller.java:463) в org.springframework.oxm.jaxb.Jaxb2Marshaller.afterPropertiesSet(Jaxb2Marshaller.java: 435) в org.springframework.beans. фабрика.поддержка.AbstractAutowireCapableBeanFactory.invokeinitmethod(AbstractAutowireCapableBeanFactory.java: 1625) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) …

Ответ №1:

Инициализируйте клиента Junit :

 ant yunitinit
  

Комментарии:

1. если эта цель ant больше не существует (она была удалена в какой-то последней версии), вы также можете выполнить «ant initialize -Dtenant = junit» для инициализации клиента junit

2. он все еще доступен в версии 6, когда он был удален?

3. Только что проверил, что он также доступен в версии 6.1

4. @BenoitVanalderweireldt Я инициализировал junit tenant, но затем он также показывает то же исключение. Хотя мои тестовые примеры отлично работают на hybris 5.4, но в hybris 5.5.1 тестовые примеры отлично работают только на интерфейсе hybris Testweb (localhost: 9001 / test). Я попытался запустить тест через eclipse, но он показывает ошибку, как показано в вопросе.

5. Не могли бы вы поделиться своей конфигурацией spring xml? global-cuppy-spring.xml ,cuppy-ws-spring.xml

Ответ №2:

Попробуйте добавить папку cuppy classes в «Конфигурации запуска». ObjectFactory.class генерируется там.