最近博主在用 IDEA+Maven+SpringMVC 4.3.10+Mybatis 3.2.8 做 Demo ,所以接着之前的标题续写一波常见异常。
Junit4 进行单元测试时控制台错误(一)
java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig
发成该错误的原因是因为我们的 web.xml 使用的是 3.0 的头信息,而我们所引用的 servlet-api 的 jar 版本(博主当时用的 2.5 版)与 Spring4 存在兼容性问题。 故在 pom.xml 中将 2.5 版的 servlet-api 删除后,新增如下依赖即可。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>test</scope>
</dependency>
Junit4 进行单元测试时控制台错误(二)
java.lang.IllegalStateException: Failed to load ApplicationContext
发生该错误的原因是因为在使用 IDEA 进行开发测试时没有添加 @WebAppConfiguration 注解。故在测试类上添加 @WebAppConfiguration 注解即可。
Junit4 进行单元测试时控制台错误(三)
Result Maps collection already contains value for
发生该错误的原因是因为 DAO 类所对应的 mapper 文件存在异常,通常情况下是因为 <resultMap>标签中的 id 属性存在重复。这种问题通常发生在使用 mybatis-genertor 进行逆向生成时发生的错误。故想要解决该问题需将 mapper 文件中重复的内容删除,但通常运行 maven 中 tomcat 插件时还会出现该问题。所以想要根本的解决该问题,我们需在用完 mybatis-genertor 插件后,将 pom.xml 文件中的插件引用注释掉,使用时再放开即可。
Junit4 进行单元测试时控制台错误(四)
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultIndenter
发生该错误的原因是因为 SpringMVC 4.3.x 的版本与 jackjson-2.X 版本发生冲突所致。故将 jackjson 版本换成 2.8.7 即可。