1

Android Spring Framework と Jackson パーサーを使用して Android 3.1 アプリケーションを開発しています。使い方がわからないのでMavenは使っていません。

次の jar をこの順序でプロジェクトのクラスパスに追加しました。

  • グアバ-11.0.2.jar
  • ジャクソン-注釈-2.0.0.jar
  • jackson-core-2.0.0.jar
  • jackson-databind-2.0.0.jar
  • spring-android-core-1.0.0.RC1.jar
  • spring-android-rest-template-1.0.0.RC1.jar

REST リクエストを作成し、JSON 解析を行うクラス:

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import com.google.common.collect.Lists;

import es.viacognita.models.Form;

public class FormSpringController
{
    public static List<Form> LoadAll()
    {
        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
        HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

        String url = "http://192.168.1.128/RestServiceImpl.svc/forms/";

        MappingJacksonHttpMessageConverter messageConverter = new MappingJacksonHttpMessageConverter();
        List<HttpMessageConverter<?>> messageConverters = Lists.newArrayList();
        messageConverters.add(messageConverter);

        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setMessageConverters(messageConverters);

        ResponseEntity<Form[]> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Form[].class);
        Form[] result= responseEntity.getBody();

        return Arrays.asList(result);
    }
}

ここ:

MappingJacksonHttpMessageConverter messageConverter = new MappingJacksonHttpMessageConverter();

次のエラーが表示されます。

java.lang.VerifyError: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter


このエラーが発生するのはなぜですか?
どうすれば解決できますか?

4

1 に答える 1

2

問題は、SpringがJackson2.0で動作しないことです。これは次の方法で解決されました。

<bean id="jacksonMessageConverter"
          class="own.implementation.of.MappingJacksonHttpMessageConverter"/>

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

そして、own.implementation.of.MappingJacksonHttpMessageConverterこれに基づいています:

http://www.jarvana.com/jarvana/view/org/springframework/spring-web/3.0.0.RELEASE/spring-web-3.0.0.RELEASE-sources.jar!/org/springframework/http/converter /json/MappingJacksonHttpMessageConverter.java?format=ok

ただし、Jackson1の代わりにJackson2.0のObjectMapperおよびその他のJacksonクラスを使用してください。*

于 2012-04-11T21:19:36.780 に答える