0

我正在尝试spring在我的应用程序android app客户端中spring mvc REST使用。我想我有一个问题要纠正我jarsclasspathandroid 应用程序。我将罐子的图像放在我的 android 应用程序的 libs 文件夹中。我在 SO 上发现了许多相关问题。但他们都没有帮助我。这就是为什么我再次在这里问。

在此处输入图像描述

这是我如何调用从这里引用的 web 服务:

@Override
protected SowResult doInBackground(Void... params) {
    System.out.println("URLLLL : "+URL);
    RestTemplate rest = new RestTemplate();
    rest.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
    SowResult result = rest.getForObject(URL, SowResult.class);
    return result;
}

我得到的例外是:

FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
Caused by: java.lang.NoSuchMethodError: org.codehaus.jackson.map.ObjectMapper.getTypeFactory
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType(MappingJacksonHttpMessageConverter.java:166)
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.canRead(MappingJacksonHttpMessageConverter.java:101)
at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:542)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:474)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:237)
at com.inovarge.shoponway.resttasks.UserRestTask.doInBackground(UserRestTask.java:30)
at com.inovarge.shoponway.resttasks.UserRestTask.doInBackground(UserRestTask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more
4

1 回答 1

1

该异常表明您缺少必需的 Jackson 依赖项。首先,我建议使用MappingJackson2HttpMessageConverter而不是MappingJacksonHttpMessageConverter您配置的:

rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

接下来,MappingJackson2HttpMessageConverter依赖于Jackson 2库的功能,这需要在您的类路径中包含以下文件:

  • jackson-databind-2.3.2.jar
  • jackson-annotations-2.3.2.jar
  • 杰克逊核心2.3.2.jar

jackson-databind-2.3.2.jar您的文件夹中已经有了libs,所以您需要下载另外两个 jar。

最后,我强烈推荐在 Android 的New Build System中使用像 Gradle 插件这样的依赖管理系统。它将为您处理下载所有传递依赖项,而不必手动执行此操作。

于 2014-04-07T03:27:03.690 回答