Я пытаюсь протестировать свое приложение по образцам на сайте 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/");
}
}
@Antot Обновлен основной пост
Похоже, вам нужно добавить javax.xml.bind:jaxb-api в список зависимостей.
Похоже, вы используете JDK 9 или выше? Это сделано намеренно, или вы можете перейти на JDK 8?




Следующая строка в выводе:
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>
Пожалуйста, опубликуйте основную причину / трассировку стека
IllegalStateException. Причина в самом первом возникшем исключении, ISE является результатом объединения нескольких исключений.