Не удалось загрузить ApplicationContext (Spring Boot)

Я пытаюсь протестировать свое приложение по образцам на сайте Spring.

Это мои зависимости:

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile("org.springframework.boot:spring-boot-starter-security")
    compile('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4")
    runtime('org.springframework.boot:spring-boot-devtools')
    runtime('com.h2database:h2')
    runtime('mysql:mysql-connector-java')
    compileOnly('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.springframework.security:spring-security-test')
}

А это тестовый класс:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ProductControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testHomePage() throws Exception {
        this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk());
    }

}

Я получаю сообщение об ошибке:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

java.lang.IllegalStateException: Failed to load ApplicationContext

Есть идеи, что может быть причиной этого? У меня нет конкретных файлов конфигурации, только конфигурация безопасности и webconfig.

Webconfig:

    public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**", "/css/**", "/fragments/**")
                .addResourceLocations("classpath:/static/images/", "classpath:/static/css/", "classpath:/fragments/");
    }
}

Пожалуйста, опубликуйте основную причину / трассировку стека IllegalStateException. Причина в самом первом возникшем исключении, ISE является результатом объединения нескольких исключений.

Antot 02.05.2018 19:14

@Antot Обновлен основной пост

Lithicas 02.05.2018 19:16

Похоже, вам нужно добавить javax.xml.bind:jaxb-api в список зависимостей.

Antot 02.05.2018 19:19

Похоже, вы используете JDK 9 или выше? Это сделано намеренно, или вы можете перейти на JDK 8?

Sam Brannen 03.05.2018 14:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
2 161
1

Ответы 1

Следующая строка в выводе:

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Сообщает нам, что класс javax.xml.bind.JAXBException не найден.

Как упоминал @Antot, добавление следующей зависимости к вашему градиенту должно решить проблему:

compile('javax.xml.bind:jaxb-api:2.3.0')

Для тех, кто использует Maven, используйте следующее:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

Другие вопросы по теме