2015-09-30 3 views
3

У меня есть весенний сапог (1.2.6) webapp. Я использую DynamoDb в качестве хранилища событий для приложения. В моих интеграционных тестах я хотел бы использовать this approach для запуска DynamoDb-Local из моего тестового кода интеграции.
Однако, после того, как в том числе зависимость:SpringBoot и DynamoDb-Local Embedded

<dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>DynamoDBLocal</artifactId> 
    <version>1.10.5.1</version> 
</dependency> 

Я получаю следующую ошибку при запуске теста интеграции:

java.lang.IllegalStateException: Failed to load ApplicationContext 
(....) 
Caused by: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jettyEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedJetty.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory]: Factory method 'jettyEmbeddedServletContainerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext 
(....) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jettyEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedJetty.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory]: Factory method 'jettyEmbeddedServletContainerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext 
(....) 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory]: Factory method 'jettyEmbeddedServletContainerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext 
(....) 
Caused by: java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext 
(....) 
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.webapp.WebAppContext 

Я даже не добавить код для моей интеграции тест, я буквально только что добавили репо и зависимость от моего POM (как описано в объявлении форума AWS, приведенном выше). Без этой зависимости все работает отлично. При необходимости я могу прикрепить свой POM. Есть идеи?

+0

Не могли бы вы прикрепить ваш полный POM? Или лучше было бы прикрепить [MCVE] (http://stackoverflow.com/help/mcve), чтобы реплицировать это локально. – mkobit

+0

запустите 'mvn dependency: tree' и посмотрим, есть ли у вас зависимость от причала –

ответ

3

com.amazonaws:DynamoDBLocal зависит от некоторых причалов. Присутствие Jetty на пути к классам путает Spring Boot, думая, что вы хотите использовать Jetty, хотя все части Jetty, которые ему нужны, недоступны. Это ошибка в Spring Boot. Спасибо, что сообщили нам об этом. Я открыл an issue, чтобы мы могли это исправить.

В то же время, вы можете обойти эту проблему путем добавления компонент в приложение, что явно говорит Spring Ботинок, который вы хотите использовать Tomcat:

@Bean 
public EmbeddedServletContainerFactory tomcatContainerFactory() { 
    return new TomcatEmbeddedServletContainerFactory(); 
} 
+0

Спасибо большое за ответ, я не ожидал, что это была ошибка в SpringBoot :) –

Смежные вопросы