我尝试在我的spring
中使用android app
作为spring mvc REST
应用程序的客户端。我想在我的Android应用的jars
中添加正确的classpath
时遇到问题。我把jar的图像放在我的Android应用程序的libs文件夹中。我在SO上发现了很多相关的问题。但他们都没有帮助我。这就是我再次问这里的原因。
以下是我如何调用从here引用的网络服务:
@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
答案 0 :(得分:1)
该异常表示您缺少必需的Jackson依赖项。首先,我建议使用MappingJackson2HttpMessageConverter
代替您已配置的MappingJacksonHttpMessageConverter
:
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
接下来,MappingJackson2HttpMessageConverter
依赖于Jackson 2库的功能,这需要在您的类路径中包含以下文件:
您的jackson-databind-2.3.2.jar
文件夹中已有libs
,因此您需要download其他两个广告柜。
最后,我强烈建议您使用依赖管理系统,例如Android New Build System中的Gradle插件。它将处理为您下载所有传递依赖项,而不必手动执行此操作。