我正在尝试在 Android 项目中使用 Json4s。我的项目编译等,但我看到以下错误:
W/dalvikvm(24527): VFY: 无法找到签名中引用的类 (Lcom/thoughtworks/paranamer/CachingParanamer;) I/dalvikvm(24527): 找不到方法 com.thoughtworks.paranamer.CachingParanamer.lookupParameterNames,从方法引用org.json4s.Meta$ParanamerReader$.lookupParameterNames W/dalvikvm(24527): VFY: 无法解析虚拟方法 11: Lcom/thoughtworks/paranamer/CachingParanamer;.lookupParameterNames (Ljava/lang/reflect/AccessibleObject;)[Ljava/lang /细绳; D/dalvikvm(24527):VFY:在 0x0008 处替换操作码 0x6e E/dalvikvm(24527):找不到类 'com.thoughtworks.paranamer.CachingParanamer',引用自方法 org.json4s.Meta$。W/dalvikvm(24527): VFY: 无法解析 Lorg/json4s/Meta$ 中的新实例 15 (Lcom/thoughtworks/paranamer/CachingParanamer;);D/dalvikvm(24527):VFY:在 0x0013 W/dalvikvm(24527) 处替换操作码 0x22:VFY:无法找到签名中引用的类 (Lcom/thoughtworks/paranamer/CachingParanamer;) D/dalvikvm(24527):DexOpt:无法在 Lorg 的 0x17 处选择直接调用 0x0009 /json4s/元$;。D/dalvikvm(24527):DexOpt:无法在 Lorg/json4s/Meta$ 的 0x1a 处选择直接调用 0x000a;。W/dalvikvm(24527):异常 Ljava/lang/NoClassDefFoundError;初始化 Lorg/json4s/Meta$ 时抛出;W/System.err(24527): java.lang.ExceptionInInitializerError W/System.err(24527): 在 org.json4s.Extraction$.mkMapping$1(Extraction.scala:207) W/System.err(24527): 在org.json4s.Extraction$.org$json4s$Extraction$$extract0(Extraction.scala:214) W/System.err(24527):在 org.json4s.Extraction$.extract(Extraction.scala:47) W/System .err(24527):在 org.json4s.ExtractableJsonAstNode。paranamer.CachingParanamer W/System.err(24527): at org.json4s.Meta$.(Meta.scala:93) W/System.err(24527): at org.json4s.Meta$.(Meta.scala) W /System.err(24527): ... 22 更多 I/dalvikvm(24527): 在先前失败的类 Lorg/json4s/Meta$ 上拒绝重新初始化;v = 0x0 D / AndroidRuntime(24527):关闭VM W / dalvikvm(24527):threadid = 1:线程退出未捕获的异常(组= 0x40dc0438)E / AndroidRuntime(24527):致命异常:主E / AndroidRuntime(24527 ): java.lang.NoClassDefFoundError: org/json4s/Meta$ E/AndroidRuntime(24527): at org.json4s.Extraction$.mkMapping$1(Extraction.scala:207) E/AndroidRuntime(24527): at org.json4s。 Extraction$.org$json4s$Extraction$$extract0(Extraction.scala:214) E/AndroidRuntime(24527): at org.json4s.Extraction$.extract(Extraction.scala:47) E/AndroidRuntime(24527): at org .
我不确定 dalvikvm 是否有问题,或者只是 proguard 问题。如果相关,Json4s.Meta 的源代码如下所示:
package org.json4s
import java.lang.reflect.{Constructor => JConstructor, Field, Type, ParameterizedType, GenericArrayType}
import java.util.Date
import java.sql.Timestamp
import com.thoughtworks.paranamer.{ParameterNamesNotFoundException, BytecodeReadingParanamer, CachingParanamer}
import scalashim._
case class TypeInfo(clazz: Class[_], parameterizedType: Option[ParameterizedType])
trait ParameterNameReader {
def lookupParameterNames(constructor: JConstructor[_]): Traversable[String]
}
private[json4s] object Meta {
import com.thoughtworks.paranamer._
其次是一堆案例类等。
关于如何解决这个问题的任何想法?