minSdkVersion应该使用Arrays.copyOf;杰克逊问题

时间:2014-10-10 21:17:38

标签: java android json jvm jackson

在我的项目中,我使用jackson json解析器。从市场我有几个错误NoSuchMethodError。从日志中我了解到设备(Galaxy Tab(GT-P1000),Android版本2.21)根本不知道这种方法。它是在java 1.6中引入的。我认为我只需要用正确的java版本构建apk。但现在我不知道要思考 所以第一个问题 - 这是什么原因?
第二 - 如何解决?我应该指出什么是minSdkVersion?

 Caused by: java.lang.NoSuchMethodError: java.util.Arrays.copyOf 
at com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer.copyArrays(CharsToNameCanonicalizer.java:603)
at com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer._addSymbol(CharsToNameCanonicalizer.java:490) 
at com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer.findSymbol(CharsToNameCanonicalizer.java:473)     at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName(ReaderBasedJsonParser.java:1259) 
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:618) at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:210) 
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:62) 
at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:14) 
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051) 
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1818)

2 个答案:

答案 0 :(得分:1)

我认为您需要至少使用 API版本9 才能使用Arrays.copyOf(...)

以下是Arrays类作为Android SDK的一部分。每种方法都会显示您需要的API版本,以便在您的代码中使用它。您可以在该页面上按API级别进行过滤。您可以用于所选API的类/方法将显示为灰色:

enter image description here

答案 1 :(得分:1)

另请注意:最后一个只需要Java 5的Jackson版本是Jackson 2.3。 Jackson 2.4最终增加了基线,需要Java 6(JDK 1.6)。

所以你可能需要使用Jackson 2.3.3版本;由于这种兼容性限制,维护了2.3分支并将收到关键的错误修复。它也是Scala 2.9模块的最后一个Jackson版本(后来的版本支持2.10和2.11)。