在我的项目中,我使用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)
答案 0 :(得分:1)
我认为您需要至少使用 API版本9 才能使用Arrays.copyOf(...)
。
以下是Arrays类作为Android SDK的一部分。每种方法都会显示您需要的API版本,以便在您的代码中使用它。您可以在该页面上按API级别进行过滤。您可以用于所选API的类/方法将显示为灰色:
答案 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)。