2014-10-10 13 views
0

在我的項目中,我使用了json解析器jackson。從市場上我有幾個錯誤NoSuchMethodError。從日誌我明白那個設備(Galaxy Tab(GT-P1000),android版本2.21)根本不知道這個方法。它在java 1.6中引入。我認爲我需要的是用正確的java版本構建apk。但現在我不知道該怎麼想。
所以第一個問題 - 這是什麼原因?
第二 - 如何解決?我應該指出什麼minSdkVersion?什麼minSdkVersion應該使用Arrays.copyOf;傑克遜問題

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

你必須記住,Android不使用Java * *。看看這個答案,並按照面包屑到其他答案:http://stackoverflow.com/questions/7535385/how-does-androids-java-version-relate-to-a-java-se-version – MarsAtomic 2014-10-10 21:24:07

回答

1

我相信你需要有一個最低的API版本9使用Arrays.copyOf(...)

這是Arrays類作爲Android SDK的一部分。每種方法都會顯示您在代碼中使用它所需的API版本。隨意按照該頁面上的API級別進行過濾。班/你不能選擇的API使用方法將變灰:

enter image description here

1

還要注意:最後傑克遜的版本只需要Java 5是傑克遜2.3。基準最終增加了傑克遜2.4,要求Java 6(JDK 1.6)。

所以你可能需要使用傑克遜2.3.3版本;由於此兼容性限制,2.3分支機構得到維護並將收到重要的錯誤修復。它也是Scala 2.9模塊的最後一個傑克遜版本(後來的版本支持2.10和2.11)。