java - 无法加载 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:在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定义名称为“entityManagerFactory”的bean创建错误:调用init方法失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
java.lang.IllegalStateException:无法加载 ApplicationContext
知道可能是什么原因造成的吗?我没有任何特定的配置文件,只有安全配置和 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/");
}
}
解决方案
输出中的以下行:
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
javax.xml.bind.JAXBException
告诉我们找不到该类。
正如@Antot 所提到的,将以下依赖项添加到您的 graddle 应该可以解决问题:
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>
推荐阅读
- sapui5 - 如何使用 UIVeri5 将文本写入 sap.m.Input?
- node.js - 如何从节点js中的数组中获取文件名值
- tensorflow - 使用 TensorFlow 2 将 Dropout 添加到 MobileNet
- jquery - 如何使用 JQuery 从我的 JSON url 文件中检索两个值并应用于 Html?
- python-3.x - python3 接受一个回调,该回调可能接受一个参数并且可能不接受
- javascript - 如何在 MomentJS 中格式化时间/持续时间,使其以小时、分钟和秒为单位
- c++ - Visual Studio + cmake 混淆
- rabbitmq - MassTransit 中的标头序列化不正确
- reactjs - 使用钩子 POST 请求成功后重新加载页面
- android - 如何从 vimeo 帐户检索视频源以在 exoplayer android 中播放?