Spring mvc 开启json转换,出现java.lang
2018-02-26 本文已影响0人
BeStronger30
在使用Jmeter对一个接口做压力测试的时候,查看结果树的每次请求的状态显示都是报错,查看响应数据报500错误,显示的异常信息为 No converter found for return value of type :java.util.HashMap 异常,但是查看程序日志处理,所有请求都完成了正确的操作,所以定位到异常时在返回结果时,返回的是一个Map类型参数,在json转换的过程中发生了错误。进行如下排查
- spring mvc进行json转换时需要依赖jackson的jar包,查看maven依赖是否添加,发现之前构建项目的时候没有请求接口,所以也没有添加依赖,那么就添加依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
- 然后进行spring-mvc.xml的配置开启json转换
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>text/css;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
然后重新编译项目,启动项目,启动的时候就开始报
java.lang.ClassNotFoundException: com.fasterxml.jackson.core.util.DefaultPrettyPrinter
异常,网上查询说是版本冲突,于是更换了好几个版本,依然报该错误,很是不解,查看maven依赖进来的jar包,也能找到这个类,百思不得其解,于是去吃饭,吃完饭回来一想,找不到是不是压根编译就没有引入进去jackson的jar包,因为使用的IDEA,所以打开该项目的Project Structure,查看生成的Artifacts包含的jar包信息,果然没有,发现Available Elements 有对应的我新增加的jackson的maven依赖jar包,双击把它们都添加到左边的依赖jar包列表中即可,重新编译项目,启动,不再出现异常,返回数据正常进行json转换。
spring mvc jackson转换异常.png