当前位置: 首页 > 知识库问答 >
问题:

Spring web应用程序,尝试发送响应为json抛出错误500错误

齐起运
2023-03-14
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.jackson.map.SerializationConfig.isEnabled(Lorg/codehaus/jackson/map/SerializationConfig$Feature;)Z
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259)
java.lang.NoSuchMethodError: org.codehaus.jackson.map.SerializationConfig.isEnabled(Lorg/codehaus/jackson/map/SerializationConfig$Feature;)Z
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.writeInternal(MappingJacksonHttpMessageConverter.java:193)
@RequestMapping(value="/getFBFriendsList",method=RequestMethod.GET)<br/>
public @ResponseBody List<String> getStatesList(HttpServletRequest req){<br/>
    List<String> statesList = null;
    try{<br/>
    statesList = new ArrayList<String>();<br/>
    //..here i am getting states from datebase and adding to list<br/>
    }<br/>
    catch(Exception e){}<br/>
    return statesList;
}

dispatcher Servlet中的配置

<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
    <property name="supportedMediaTypes" value="application/json" />
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jsonHttpMessageConverter" />
        </list>
    </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass">
        <value>
            org.springframework.web.servlet.view.tiles2.TilesView
        </value>
    </property>
</bean>

我在用杰克逊罐子

  • jackson-core-asl-1.9.0.jar
  • Jackson-Mapper-ASL-1.9.0.jar
  • json-lib-0.9.jar

Spring版本是3.2.4

共有1个答案

公孙俊弼
2023-03-14

看起来您至少需要使用Jackson 1.9.2或更高版本。在Jackson 1.9.0和1.9.1的源代码中,删除了org.codehaus.Jackson.map.SerializationConfig.isEnabled()的方法定义。这就是收到NoSuchMethodError异常的原因。

然后在Jackson1.9.2的源代码中可以看到以下内容:

/*
/**********************************************************
/* MapperConfig overrides for 1.8 backwards compatibility
/**********************************************************
 */

/* NOTE: these are overloads we MUST have, but that were missing
 * from 1.9.0 and 1.9.1. Type erasure can bite in the ass...
 *<p>
 * NOTE: will remove either these variants, or base class one, in 2.0.
 */

/** 
 * Alias for {@link MapperConfig#isEnabled(org.codehaus.jackson.map.MapperConfig.ConfigFeature)}.
 * 
 * @since 1.0 However, note that version 1.9.0 and 1.9.1 accidentally missed
 *    this overloaded variant
 */
public boolean isEnabled(SerializationConfig.Feature f) {
    return (_featureFlags & f.getMask()) != 0;
}

所以简而言之,不要在Spring MVC中使用Jackson版本1.9.0或1.9.1,因为Jackson开发人员删除了一些实际需要的东西。

 类似资料:
  • 我需要使用JSON发送身体参数。我正在使用Printify API。我不断从服务器得到错误响应,我的身体参数是空的。 这是我试图创建的命令: 它需要包括主体参数(这是API指南中的一个示例): 这是我的代码: 我一直从Prinify服务器获得以下错误响应(这是在解析之后): 代码:10100消息:验证失败。原因:文件名:文件名字段是必需的。内容:当url不存在时,内容字段是必需的。url:当内容不

  • 我正在尝试为我的所有TextViews/EditViews等设置自定义字体。我遵循这个答案:是否可以为整个应用程序设置自定义字体? 为此,我有一个<code>。ttfassets/font/myFont.ttf中的文件。要将此<code>字体: } 要将其添加到我的文本视图,我只需在布局中执行以下操作: 样式在哪里: 错误 我想我确实错过了一些非常简单的事情。这是LogCat:

  • 但我只能得到: 当请求实体的内容类型不是application/x-www-form-urlencoded时,使用@FormParam 我的代码:

  • 当我单击“开始”按钮时,emulator不工作。我能做什么?请帮帮我!这是错误: 我能做什么?请帮帮我! 不可预期的顶级例外:ain.run运行时异常:C:\用户\维森\\Android\Probeta\app\build\中介\类\调试:文件未找到ain.java:246FileUcom.android.dx.command.dexer.文件(FileUain.main)ain.java:215

  • 我在laravel中创建计费协议时遇到错误。错误在这里。 访问https://API . sandbox . paypal . com/v1/payments/billing-agreements/时得到Http响应代码500。 {“name”:“INTERNAL_SERVICE_ERROR”,“message”:“发生了内部服务错误”,“information_link”:https://dev

  • 我是Grails的新手,我用GVM工具安装了它,并试图从终端运行一个默认应用程序,只需尝试以下命令:Grails create-app demo和Grails run-app,我得到了一个巨大的错误: 编辑:问题解决了,只需升级JDK版本。