最近博主在用 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
即可。