首页 > 解决方案 > 无法使用jackson在springboot中返回JSON

问题描述

我已经使用 spring boot 创建了一个服务器,并且我正在使用 jackson 返回 json 对象以在前端进行 ajax 调用。

这是我的杰克逊配置。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.0</version>
</dependency>

这是我的模型:

package com.nitish.kumar.model;

public class ModelForState {

    private Long empCount;

    private String state;

    public ModelForState(String state, Long empCount) {
        super();
        this.state = state;
        this.empCount = empCount;

    }

    public Long getEmpCount() {
        return empCount;
    }

    public void setEmpCount(Long empCount) {
        this.empCount = empCount;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

}

这是我的查询:

@Query("SELECT " +
           "    new com.nitish.kumar.model.ModelForState(e.state, COUNT(e)) " +
           "FROM " +
           "    Employees e " +
           "GROUP BY " +
           "    e.state")
List<ModelForState> findStateCount();

还有一个简单的控制器:

@RequestMapping(value="/getEmployeeBasedOnState", method =RequestMethod.GET)
@ResponseBody
public List<ModelForState> getEmployeeBasedOnState()
{

    List<ModelForState> state= dashboardrepositary.findStateCount();
    return state;

}

这是困扰我的服务器的错误:(

Type Exception Report

Message Handler dispatch failed; nested exception is java.lang.AbstractMethodError: com.fasterxml.jackson.core.type.ResolvedType.getReferencedType()Lcom/fasterxml/jackson/core/type/ResolvedType;

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: com.fasterxml.jackson.core.type.ResolvedType.getReferencedType()Lcom/fasterxml/jackson/core/type/ResolvedType;
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1054)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
Root Cause

java.lang.AbstractMethodError: com.fasterxml.jackson.core.type.ResolvedType.getReferencedType()Lcom/fasterxml/jackson/core/type/ResolvedType;
    com.fasterxml.jackson.core.type.ResolvedType.isReferenceType(ResolvedType.java:59)
    com.fasterxml.jackson.datatype.jdk8.Jdk8TypeModifier.modifyType(Jdk8TypeModifier.java:20)
    com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:413)
    com.fasterxml.jackson.databind.type.TypeBindings._resolveBindings(TypeBindings.java:305)
    com.fasterxml.jackson.databind.type.TypeBindings._resolve(TypeBindings.java:203)
    com.fasterxml.jackson.databind.type.TypeBindings.findType(TypeBindings.java:121)
    com.fasterxml.jackson.databind.type.TypeFactory._fromVariable(TypeFactory.java:901)
    com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:399)
    com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
    com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
    com.fasterxml.jackson.databind.type.TypeFactory._collectionType(TypeFactory.java:959)
    com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:774)
    com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:386)
    com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:358)
    com.fasterxml.jackson.databind.cfg.MapperConfig.constructType(MapperConfig.java:268)
    com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1112)
    com.fasterxml.jackson.databind.SerializerProvider._findExplicitUntypedSerializer(SerializerProvider.java:1082)
    com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.hasSerializerFor(DefaultSerializerProvider.java:392)
    com.fasterxml.jackson.databind.ObjectMapper.canSerialize(ObjectMapper.java:2408)
    org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canWrite(AbstractJackson2HttpMessageConverter.java:176)
    org.springframework.http.converter.AbstractGenericHttpMessageConverter.canWrite(AbstractGenericHttpMessageConverter.java:76)
    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.getProducibleMediaTypes(AbstractMessageConverterMethodProcessor.java:373)
    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:230)
    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:180)
    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
Note The full stack trace of the root cause is available in the server logs. 

它昨晚工作,但重新启动后突然停止工作。

我是Java springboot的新手,我什至无法理解以下错误是什么,尝试将tomcat安装为通配符,但效果甚微。

标签: javaspring-boottomcat

解决方案


推荐阅读